Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
В чём разница между многопоточностью (CPU-bound) и асинхронностью (IO-bound) в .NET и как работают async/await?
CPU-bound задачи используют потоки и Parallel/Tasks для распределения вычислений между ядрами и могут потребовать lock/SemaphoreSlim. IO-bound операции (await httpClient.GetAsync) не блокируют поток — метод возвращает Task, освобождая поток для других задач, а по завершении I/O продолжает выполнение в пуле. async/await трансформирует метод в state machine, которая при встрече await регистрирует продолжение и возвращает Task без блокировки текущего потока.
Приведи пример: как решить 10 CPU-bound и 10 IO-bound задач на Python?
Для CPU-bound задач используйте многопроцессность (модуль multiprocessing), чтобы обойти GIL и задействовать несколько ядер. Для IO-bound задач используйте многопоточность (модуль threading) или асинхронное программирование (модуль asyncio), чтобы эффективно ждать завершения операций ввода-вывода.
Почему IO-bound задачи не блокируют поток из-за GIL?
IO-bound задачи не блокируют поток из-за GIL, потому что во время операций ввода-вывода (например, сетевых запросов или чтения файлов) поток отпускает GIL, позволяя другим потокам выполняться. Это делает многопоточность эффективной для IO-bound задач, даже несмотря на наличие GIL.
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7