Czy programowanie asynchroniczne w node.js przyspiesza zadania związane z procesorem?

Wcześniej dzisiaj odpowiedziałem na pytanieta odpowiedź. W podanym przeze mnie przykładzie użyłem synchronicznej wersji wywołania w module węzła bcrypt. Zdecydowałem się użyć synchronicznej wersji wywołania głównie dlatego, że myślałem, że sprawiło to, że odpowiedź wygląda trochę czysto, ale nie sądziłem też, że wpłynie to na wydajność, ponieważ bcrypt jest cpu i intensywnie wykorzystuje pamięć zamiast I / O. Zrozumiałem, że węzeł uruchomił prawie cały kod na jednym wątku, podobnie jak przeglądarki, i używał tylko wątków w tle do takich rzeczy, jak I / O i dostęp do bazy danych. To doprowadziło mnie do przekonania, że ​​zadania wymagające dużej mocy obliczeniowej nadal zasadniczo „blokują” serwer, ponieważ nie ma innych wątków, które mogłyby odciążyć pracę.

Komentarz do mojej odpowiedzi wskazywał, że moje założenie było błędne i po kilku badaniach zdałem sobie sprawę, że tak naprawdę nie miałem wielkiego pojęcia o tym, jak node.js obsługuje tego typu rzeczy.Czy programowanie asynchroniczne w node.js przyspiesza połączenia z procesorem i pamięcią? Jeśli tak, jak to robi?

questionAnswers(1)

yourAnswerToTheQuestion