в чем разница между блокировкой, приостановкой и сном - PullRequest
0 голосов
/ 04 мая 2018

Например, процесс прослушивает какой-либо порт в режиме блокировки, поэтому, если ввод / вывод не готов, процесс будет заблокирован.

while (true)
{
    msg = recv(port, BLOCKING_FLAG); // blocks here
    cout<<msg<<endl;
}

Мы также знаем, что можем перевести процесс в режим сна: sleep(1000).

Мой вопрос: если такой процесс блокирует, могу ли я сказать, что процесс приостановлен? Будет ли процесс выгружен из процессора? Те же вопросы на sleep.

1 Ответ

0 голосов
/ 04 мая 2018

«Спящий» - обычно означает, что поток находится в явном sleep(...) вызове.

«Приостановлено» - иногда используется универсальным образом, что означает, что поток ожидает ... что-то. В других случаях «Приостановлено» означает, что какой-то другой поток или процесс явно приостановил его (например, в целях отладки), и процесс / поток не сможет снова работать, пока он не будет явно возобновлен.

«Заблокирован» - это самый общий из трех. Часто это просто означает, что процесс / поток чего-то ждет. Иногда это означает, что поток / процесс ожидает операции ввода-вывода.

...