Что термин “блокирование” означает в программировании?

Кто-то мог предоставить определение неспециалиста и вариант использования?

19
задан Koray Tugay 25 February 2015 в 11:09
поделиться

2 ответа

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

3
ответ дан 30 November 2019 в 04:24
поделиться

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

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

23
ответ дан 30 November 2019 в 04:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: