Здравствуйте, Нахлобуч, Вы писали:
WH>>Я тебе могу расказать как можно задедлочится на пуле... но ты почемуто считаешь что это невозможно
Н>Мне расскажи.
1)Клиент спрашивает машину А. Машина А спрашивает машину Б. Машина Б спрашивает машину А. Если на машине А один пул потоков и клиенты много спрашивают то будет дедлок.
2)Есть две машины. Запросы от клиентов обрабатываются обе машины. Обычно справляются сами но иногда приходится спрашивать соседа. Если на каждой машине один пул то при большом колличестве запросов будет дедлок.
...
Обе описанные проблемы решаются отдельным пулом для внутренних запросов.
В реальной жизни может быть нужно больше чем два пула. Но там уже не только разруливание дедлоков но и обеспечение реактивности засчет разнесения медленных и быстрых запросов в разные пулы и ограничение запросов упирающихся в процессор выставлением колличества потоков в колличество процессоров — 1 итп...
Это не считая баналностей типа: Задача которая выполняется в пуле хочет создать несколько асинхронных подзадач и дождаться от них ответа (например спросить несколько соседних серверов).
Очевидно если задачи и поздадачи засунуть в один пул то рано или поздно будет дедлок.
... << RSDN@Home 1.2.0 alpha rev. 673>>