2015-04-02 13 views
5

Zacząłem czytać node.js. Mam kilka pytań:Opis pliku node.js

  1. Czy węzeł lepiej niż wielowątkowości tylko dlatego, że ratuje nas od troski o zakleszczenia i zmniejsza tworzenie narzut wątek, czy też istnieją inne czynniki też? Węzeł korzysta wewnętrznie z wątków, więc nie możemy powiedzieć, że zapisuje narzut wątku, tylko że jest zarządzany wewnętrznie.

  2. Dlaczego mówimy, że węzeł nie jest dobry dla procesorów wielordzeniowych? Tworzy wątki wewnętrznie, więc musi czerpać korzyści z wielordzeniowych. Dlaczego mówimy, że nie jest to dobre dla aplikacji intensywnie korzystających z procesora? Zawsze możemy otworzyć nowe procesy dla zadań intensywnych dla procesora.

  3. Czy działają tylko wtedy, gdy wywołanie zwrotne jest wysyłane jako wątek, czy są też inne przypadki?

  4. Nie blokujące operacje we/wy można uzyskać również za pomocą wątków. Główny wątek może być zawsze gotowy do odbierania nowych żądań. Więc jaka jest korzyść?

+0

Istnieje kilka podobnego wątku omówienia tego tematu, czyli http://stackoverflow.com/questions/5062614/how-to-decide-when-to-use-node-js – SGD

+0

Dla historyczny Perspektywa w tej kwestii, zobacz: http://stackoverflow.com/questions/3759683/how-node-js-server-is-better-than-thread- based -server/3759991#3759991 – slebetman

+0

Zobacz także oryginalny problem c10k, który wszystko zaczęło się: http://www.kegel.com/c10k.html – slebetman

Odpowiedz

0
  1. Prawidłowe.

  2. Node.js ma skalować z rdzeni, poprzez child processes, clusters, między innymi.

  3. Oddzwanianie to zwyczajna konwencja stosowana przez deweloperów do implementacji metod asynchronicznych. Nie ma żadnego technicznego powodu, dla którego musisz je uwzględnić. Można na przykład zastosować wszystkie obietnice asynchroniczne.

  4. Węzeł wszystkiego może zostać zrealizowany za pomocą wątków, ale mniej jest kodu/narzutów związanych z asynchronicznym IO node.js niż w przypadku wielowątkowego kodu. Nie musisz na przykład tworzyć instancji o wartości thread or runnable za każdym razem, tak jak w przypadku Java.

+1

1 jest częściowo poprawny. Node.js nie używa wewnętrznych wątków. Jest to gigantyczna pętla while() wokół select()/poll()/epoll()/libevent – slebetman