LINUX.ORG.RU

Вопрос по блокир. и неблокир. режимам и время CPU


0

0

Каким образом используется процессорное время когда сокет заблокирован?
Планировщик должен сразу переключить управление с заблокирированного процесса на другой или я чего-то недопонимаю?

Во многих книжках пишут: чтобы не занимать процессорное время используйте неблокирующий режим вместо блокирующего ...
???

anonymous

"Каким образом используется процессорное время когда сокет заблокирован?
Планировщик должен сразу переключить управление с заблокирированного процесса на другой или я чего-то недопонимаю? "

Да верно, процесс засыпает. А процессорное время будет отдано другому, нуждающемуся в нем процессу.

"Во многих книжках пишут: чтобы не занимать процессорное время используйте неблокирующий режим вместо блокирующего ... "

тут скорее было бы правильней поставить вместо слова "не занимать" слово "не терять" :)

неблокирующий режим применяется, как раз чтобы не отдавать это время другому процессу, а использовать самому. К примеру пока процесс мог быть заблокирован на чтении из сокета, в это время можно было делать другую работу, например обрабатывать пришедшие ранее данные.

Dead ★★★★
()

В принципе Dead уже толково ответил. Просто немного дополню: смысл "неблокирующего" состоит в том, чтобы избегать перепланирования (reschedule) нити из-за ожидания на каких-либо объектах (обычно, вводе-выводе). Перепланирование из-за того, что кончился выделенный квант, естественно, не блокируется. :)

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.