Рабочие темы в Linux - PullRequest
       19

Рабочие темы в Linux

3 голосов
/ 18 февраля 2011

Почему иногда необходимо создавать новые рабочие потоки, которые выполняют отложенные рабочие функции, вместо того, чтобы просто планировать их в рабочем потоке ядра по умолчанию "events / n"?

1 Ответ

7 голосов
/ 18 февраля 2011

Рабочий поток событий должен мультиплексировать много задач, поэтому его нельзя блокировать (вызывать schedule () внутри одной задачи). Однако есть много задач, которые нужно блокировать (ожидание диска, сети, некоторых устройств и т. Д.), И есть много функций в ядре, которые блокируют внутри себя (например, семафоры или даже выделение памяти). Такие функции могут выполняться только от имени пользователя внутри системного вызова или в выделенном потоке ядра.

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

...