Шрифт:
Мы используем неименованное отображение в память, если оно поддерживается (например, в 4.4BSD), или отображение файла
Затем мы модифицируем нашу функцию
В табл. 30.2 показано распределение нагрузки по дочерним процессам. Когда свободные дочерние процессы блокированы вызовом функции
Коллизии при вызове функции select
Рассматривая данный пример в 4.4BSD, мы можем исследовать еще одну проблему, которая встречается довольно редко и поэтому часто остается непонятой до конца. В разделе 16.13 [128] говорится о коллизиях( collisions), возникающих при вызове функции
Коллизии при вызове функции
Листинг 30.11. Модификация листинга 30.9: блокирование в вызове select вместо блокирования в вызове accept
Если, проделав это изменение, мы проверим значение счетчика ядра BSD/OS
Если сравнить значения времени, затраченного центральным процессором в этом примере, то получится, что при добавлении вызова функции
Из этого примера следует вывод, что когда несколько процессов блокируются на одном и том же дескрипторе, лучше, чтобы эта блокировка была связана с функцией