Когда блок ввода-вывода блокирует ввод-вывод, как планировщик определяет, что он прекратил блокировать?

Из того, что я прочиталВотпланировщик golang автоматически определит, блокирует ли подпрограмму ввод-вывод и автоматически переключится на обработку других подпрограмм в потоке, который не заблокирован.

Что мне интересно, так это то, как планировщик затем выясняет, что эта программа перестала блокировать ввод-вывод.

Это просто делает какой-то опрос каждый раз, чтобы проверить, все еще ли он блокирует? Есть ли какой-нибудь фоновый поток, который проверяет состояние всех программ?

Например, если вы выполняете HTTP-запрос GET внутри группы, для получения ответа которого требуется 5 секунд, он блокируется во время ожидания ответа, и планировщик переключается на обработку другой процедуры. Теперь, учитывая, что, когда сервер возвращает ответ, как планировщик понимает, что ответ получен, и пришло время вернуться к процедуре, которая сделала GET, чтобы он мог обработать результат GET?

Ответы на вопрос(1)

Ваш ответ на вопрос