В веб-серверах на основе PHP (или Java/ASP.NET/Ruby) каждый клиентский запрос создается в новом потоке. Но в Node.js все клиенты работают в одном потоке (они могут даже использовать одни и те же переменные!) Я понимаю, что операции ввода-вывода основаны на событиях, поэтому они не блокируют цикл основного потока.
Я не понимаю, почему автор Node выбрал однопоточное? Это усложняет ситуацию. Например, я не могу запускать интенсивную работу с ЦП, поскольку он блокирует основной поток (и новые клиентские запросы блокируются), поэтому мне нужно создать процесс (что означает, что мне нужно создать отдельный файл JavaScript и выполнить другой процесс Node в теме). Однако в PHP cpu интенсивные задачи не блокируют других клиентов, потому что, поскольку я упоминал, что каждый клиент находится в другом потоке. Каковы его преимущества по сравнению с многопоточными веб-серверами?
Примечание. Я использовал кластеризацию, чтобы обойти это, но это не очень.