Страница 2 из 2

Добавлено: 27 авг 2003, 13:27
mend0za
да стопудово в библиотеке, сейчас будем переходить на upstream версию
писали, но похоже не туда

единственная и самая лучшая книга
http://www.rubycentral.com/book/index.html

Добавлено: 28 ноя 2003, 21:22
Гость
Красиво, но что - то не компилится пример под Linux.
prefork.cpp: In function `int main()':
prefork.cpp:79: error: invalid conversion from `void*(*)(int*)' to `void*(*)(void*)'
prefork.cpp:85: error: invalid conversion from `void*(*)(int*)' to `void*(*)(void*)'

Добавлено: 30 ноя 2003, 20:16
mend0za
хм, проверялось под gcc 2.95, вероятно с более поздними компиляторами код не дружит.

Добавлено: 01 дек 2003, 14:48
dimm_coder
2 Гость: Это поддержка более строгой типизации добралась и до C.

2 [uNIx]mend0za:

Я тут как-то наткнулся на описание следующей существовавшей проблемы с accept(). Описывается она для ядра 2.2.* - 2.3.*. Надо полагать исправлена в 2.4.
Так вот поведение ядра не совсем то что я предполагал и скажем нелогично/неэффективно - оказывается пробуждались все ожидающие потоки/процессы, правда только на уровне исполнения кода в режиме ядра, затем только один продолжал выполнение с новым соединением - возврат в пользовательский режим, остальные возвращались в спящее состояние. С точки зрения пользователя - просыпался только один, но со стороны ядра было лишняя трата времени на исполнение кода в режиме ядра.
В общем тут более подробное описание, если интересно:
http://www.citi.umich.edu/projects/linu ... ccept.html

На счет потоков на пользовательском уровне - была тут идея у меня скомбинировать принятие соединений на базе потоков ядра (pthread - которая использует эту модель 1:1), а обработку запросов на базе какой-либо библиотеки потоков пользовательского уровня. На первый взгляд кажется эффективным если большая часть (а лучше почти вся) обработки запроса идет в пользовательском режиме, т.е. нет/немного блокирующих вызовов (хотя пожалуй и это можно частично решить). В этом случае, если есть много обрабатываемых в одно и то же время запросов такого рода - то можно выиграть за счет меньшего времени переключения контекстов потоков на пользовательском уровне.

Добавлено: 01 дек 2003, 16:05
mend0za
проблема с accept() - читайте классиков. Стивенс "Network programming" - 1 том.
не новость.