Блокирующий вызов.md
This commit is contained in:
parent
ae64bba4a5
commit
a097fb5b26
44
dev/architecture/Блокирующий вызов.md
Normal file
44
dev/architecture/Блокирующий вызов.md
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
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/Бэкенд большую часть времени ждет|Бэкенд большую часть времени ждет]]
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
FROM [[]]
|
||||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||||
```
|
1
index.md
1
index.md
@ -58,6 +58,7 @@ enableToc: false
|
||||
- Сборщики
|
||||
- [[meta/zero/00 Maven|00 Maven]]
|
||||
- [[meta/zero/00 Gradle|00 Gradle]]
|
||||
- [[meta/zero/00 Linux|Linux]]
|
||||
- [Сети](meta/zero/00%20Сети.md)
|
||||
- [Алгоритмы](meta/zero/00%20Алгоритм.md)
|
||||
- [Snippets](meta/zero/00%20Snippets.md)
|
||||
|
BIN
meta/files/images/Pasted image 20240319200211.png
Normal file
BIN
meta/files/images/Pasted image 20240319200211.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 476 KiB |
Loading…
Reference in New Issue
Block a user