Давайте набросаю теории... возможно, все это Вам известно, но хуже не будет.
FastCGI - это по сути протокол, расширяющий CGI. Его суть заключается в том, что в отличии от CGI схемы, где каждый запрос пораждает запуск исполняемого файла, в FastCGI запрос пробрасывается на менеджер таких запросов, который берет на себя управление - что запускать.
Например, можно реализовать схему, когда менеджер FastCGI запросов, на каждый такой запрос будет запускать затребованный исполняемый файл и выдавать его ответ - т.е. по сути ничем не отличаться от обычного CGI. Конечно, так никто не использует FastCGI ибо...
Ибо из-за удобной схемы получения запросов можно сделать так, что бы приложение один раз запустилось, а потом только принимало запросы от FastCGI, обсчитывало их и выдавало ответ. Одно "но" - приложение должно уметь работать в таком режиме.
А дальше, получив такое приложение мы сталкиваемся с задачами "параллельности" исполнения запросов, которые ничем не отличаются от подобных задач в веб-серверах.
В FastCGI есть понятие "менеджера" запросов. По сути, это та часть кода, которая занимается акцептом соединения с клиента и передача полученного запроса той части кода, что сможет запрос обсчитать и выдать ответ. Выделяю я это потому что такие менеджеры могут быть отдельны от приложения, например, PHP можно запускать в FastCGI режиме как со встроенным менеджером запросов, так и с внешним (в пакете lighthttp есть.. кажется spawn-fcgi). Патч php-fpm - по сути переписанный встроенный в PHP менеджер запросов, ибо оригинальный встроенный обладает определенной нестабильностью.
Итак, FastCGI дает возможности, а как их реализует конкретное приложение - его дело.
Если говорить о ПХП, то там схема prefork - форкаются несколько детей, и запросы распределяются между ними. prefork статичный - т.е. количество форкнутых детей не меняется (php-fpm обещает это изменить).