Worker threads — co zrobić z kosztownym obliczeniem?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Worker threads wykonują JavaScript na dodatkowych wątkach i przydają się do kosztownej pracy CPU. Główny event loop może wtedy dalej obsługiwać I/O.
Przykład: duże obliczenie raportu wydzielam do puli workerów i przekazuję zadanie przez komunikaty. Nie tworzę nowego workera dla każdej drobnej operacji.
Doprecyzowanie: proces potomny ma osobny proces i pamięć. Workery mogą współdzielić pamięć przez SharedArrayBuffer, ale najprostszy model to komunikaty i kopiowanie lub transfer danych.
Pułapka: zwykłe async nie przenosi pracy CPU na worker. Do typowego I/O dodatkowy worker często nie pomaga, bo Node ma już mechanizmy asynchroniczne.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Powiązane pytania
- B01 · Co blokuje pętlę zdarzeń i dlaczego async nie przenosi obliczeń na inny wątek? — JavaScript, TypeScript i Node.js