CGI:
Нам пришел запрос, мы запустили процесс, получили его результат и процесс закрылся.
Плюсы:
Изолированность (вы не сможете без специальных телодвижений попасть в соседний процесс. Гарантируется системой)
Минусы:
Медленно (Стоимость поднятия процесса ОЧЕНЬ дорогая. Да еще к тому-же и поднимать интерпретатор Перла, компилить код и т.д.)
Daemon (single process, single thread):
Вы запустили процесс, подготовились, приняли запрос по сокету, отдали ответ, подготовились к другому запросу)
Плюсы:
Не надо каждый раз запускать процесс.
Минусы:
Надо уметь чистить за собой и если вдруг что-то случиться у вас может накапливаться ошибка из-за побитой памяти от предыдущего запроса
Daemon (single process, multiple thread):
Вы запустили процесс, в нем запустили кучу потоков и в каждом из них получаете запросы и обрабатываете их)
Плюсы:
Потоки легковесны (относительно процессов), экономится память (так как экземпляр того-же интерпретатора один раз загружен в память).
Минусы:
Падение одного потока может привести к порче всего процесса.
Daemon(multiple process, single thread):
Вы запустили столько процссов сколько хотите, в кажом из них по одному потоку:
Плюсы:
Процессы независимы друг от друга. Падение одного не уронит другой.
Минусы:
Больший расход памяти, больше необходимо времени на инвалидацию кешей, если они есть и т.д.