Далее подсчитывается число простаивающих потоков и выполняется либо запуск новых, либо останов существующих для поддержания числа простаивающих потоков между нижней и верхней отметками. Способ выполнения этих операций аналогичен применяемому в адаптивных серверах с предварительным ветвлением, за исключением того, что рабочие потоки нельзя уничтожать с помощью сигналов. Состояние таких потоков устанавливается равным “goner” и им предоставляется возможность самостоятельно завершить работу.
Строки 41-47. Выполнение заключительных действий. После выхода из главного цикла состояние каждого рабочего потока устанавливается равным “goner” и вызывается функция exit(). Хотя уже завершена работа главного потока, сам серверный процесс не останавливается до тех пор, пока каждый поток не закончит обработку ждущих транзакций, не проверяя код состояния и не завершит свою работу.
Строки 48-67. Подпрограмма do_thread(). Эта подпрограмма создает основу каждого рабочего потока. Ее выполнение начинается с выборки идентификатора текущего потока и установки начального значения кода состояния, равного “idle”. Теперь подпрограмма входит в цикл, который заканчивается после того, как код состояния принял значение “goner” или обслужено число транзакций указанное константой max_request.
Необходимо периодически опрашивать состояние для своевременного распознавания требования выполнить завершение работы, поэтому не может допускаться переход сервера в состояние, блокированное при выполнении функции lock ( ) или accept ().
2014-12-26 13:18:15
это интересно Работа с компьютерами и ноутбуками зачастую требует переустановки системы и загрузки необходимого программного обеспечения с флешки. Как настроить биос, что бы первым опрашивался порт USB можно узнать на странице http://pcpro100.info/nastroyka-bios-dlya-zagruzki-s-fleshki/ , где представлены различные варианты биоса и способы работы в них.