--- aliases: - блокирующие операции - блокирующая операция - блокирующий вызов - блокирующий ввод-вывод - блокирующего tags: - maturity/🌱 date: - - 2024-01-28 zero-link: - "[[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]" parents: linked: - "[[Бэкенд большую часть времени ждет]]" --- Блокирующий вызов блокирует [поток](../fundamental/Поток%20процесса%20ОС.md) до того момента, как будут-получены данные. Во время блокировки [процесс](../fundamental/Процесс%20ОС.md) не потребляет процессорное время, но потребляет память. Например, для выполнения запроса к БД из пула потоков берётся поток, далее он ожидает, пока БД выполнит запрос и вернёт результат. Это одна из основных проблем императивного программирования. ==Если вычисление результата займёт 5 минут, то поток всё это время будет недоступен для других операций.== Это может привести к снижению производительности сервиса, особенно если многие потоки будут блокироваться в ожидании завершения долго выполняющихся запросов к базе данных. В какой-то момент у вас просто могут закончиться потоки в пуле, и обработка новых запросов просто остановится. ![](../../meta/files/images/Pasted%20image%2020240319200211.png) ## Почему простаивание потока — это проблема? Каждый поток нуждается в памяти для хранения своего стека вызовов и других связанных с ним структур данных. ==Когда поток простаивает, он продолжает потреблять ресурсы для поддержания своего состояния.== Кроме того, процессорное время, которое выделяется неработающим потокам, могло бы быть использовано для других задач. Если большое количество потоков простаивает, это может привести к увеличению загрузки процессора и снижению производительности, так как операционная система будет тратить больше времени на переключение между потоками. ## Заметки - Чтение с диска в linux может быть только блокирующим. *** ## Мета информация **Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]] **Родитель**:: **Источник**:: **Автор**:: **Создана**:: [[2024-01-28]] ### Дополнительные материалы - [[../../../../_inbox/Бэкенд большую часть времени ждет|Бэкенд большую часть времени ждет]] ### Дочерние заметки