Что означает термин «блокировка» в программировании? - PullRequest
19 голосов
/ 09 марта 2010

Может ли кто-нибудь предоставить определение непрофессионала и вариант использования?

Ответы [ 2 ]

22 голосов
/ 09 марта 2010

«Блокировка» означает, что вызывающий абонент ждет, пока вызываемый не завершит свою обработку. Например, «блокирующее чтение» из сокета ожидает, пока не будет данных для возврата; «неблокирующее» чтение не делает, оно просто возвращает указание (обычно подсчет) того, было ли что-то прочитано.

Вы слышите термин в основном о API, которые обращаются к ресурсам, которые не обязательно требуют внимания процессора - например, к вводу / выводу. Вы также слышите это в многопоточности: вызов из потока A в поток B может быть предназначен для «блокировки» (удержания потока A) до тех пор, пока поток B не достигнет соответствующего состояния для обработки или по крайней мере принятия запроса. (Наиболее очевидный пример - «соединение», которое обычно означает «Я, Поток A, хочу дождаться завершения потока B» - вы используете это при выходе из многопоточной программы.)

3 голосов
/ 09 марта 2010

Простыми словами: если вы вызываете функцию, которая останавливает выполнение программы до тех пор, пока пользователь не выполнит какое-либо действие (или другое действие, которое не контролируется вашей программой), этот вызов называется блокирующим вызовом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...