Chociaż pytanie zostało już wyjaśnione przez długi czas, myślę o tym samym.
Węzeł JS to technologia z pojedynczym gwintem. Zasadniczo obawą twórcy węzła JS (Ryan Dahl) było to, że przetwarzanie równoległe za pomocą wielu wątków nie jest właściwe lub zbyt skomplikowane.
jeśli node.js nie wykorzystuje wątki jaki sposób obsłużyć jednoczesnych żądań w równoległych
Ans: Jest to całkowicie błędne zdanie, gdy mówisz, że nie korzysta z wątków, węzeł JS stosowanie nici ale w inteligentny sposób. wykorzystuje pojedynczy wątek służyć wszystkie żądania HTTP & wielu wątków w puli wątków (w libuv) do obsługi każde działanie blokowania
Libuv: biblioteki do obsługi asynchronicznego we/wy.
Co oznacza model zdarzeń we/wy?
Odp .: Właściwy termin to nieblokujący I/O. To prawie nigdy nie blokuje, jak mówi oficjalna strona Node JS. Kiedy dowolne żądanie trafia do serwera węzła, nigdy nie umieszcza go w kolejce. Przyjmuje żądanie i rozpoczyna wykonywanie, jeśli jest to blokowanie, po czym zostało wysłane do działającego obszaru wątków i zarejestrowało wywołanie zwrotne dla tego samego, zaraz po zakończeniu wykonywania kodu, wywołuje to samo wywołanie zwrotne i przechodzi do kolejki zdarzeń i przetwarzane przez pętlę zdarzeń po które tworzą odpowiedź i wysyłają do odpowiedniego klienta.
Przydatny link: click here
Dzięki Michael. Rozumiem, że operacje asynchroniczne IO mają naturę JS, ale nie rozumiem, że jeśli node.js/JS jest pojedynczym wątkiem, to jak obsługuje operacje asynchroniczne. Może pracować z asynchroniczną operacją I/O równolegle z kodem po stronie serwera, ale w jaki sposób. – Davita
@Davita: Operacje we/wy nie są wykonywane przez procesor. Kod po stronie serwera nie musi się angażować, dopóki zewnętrzny sprzęt nie wypełni jakiegoś bufora i poinformuje o tym procesor poprzez mechanizm przerwań. –
@Davita istnieje mały zapis o pętli zdarzeń node.js tutaj: http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ – LoG