Это плохой подход.
Вам не нужны (и не должны использоваться) рабочие потоки для вашего варианта использования.
В рабочих потоках
Рабочие потоки являются изолированными экземплярами Javascript, которые выполняются как отдельный поток. Они предназначены исключительно для выполнения ресурсоемких работ.
vs vanilla Node
Но они вам не нужны, потому что библиотеки Node являются асинхронными, что означает, что если ваш код действительно не сильно загружен ЦП, вы не увидите никакой выгоды от использования Рабочие потоки (на самом деле их использование накладно, поэтому, если они не нужны, ваш код будет работать медленнее ).
Из документов : «Рабочие (потоки) полезны для выполнения ресурсоемких операций JavaScript. Они мало помогут в работе с интенсивным вводом / выводом. Встроенный Node.js - операции асинхронного ввода-вывода более эффективны, чем рабочие. "
Подробнее о многопоточности
Javascript является однопоточным и очень хорошо работает таким образом. В Javascript отсутствует понятие «потокобезопасности», потому что оно не нужно; Весь код является потокобезопасным.
Если у вас есть код, интенсивно использующий процессор
Если вы выполняете дорогостоящее сопоставление регулярных выражений, то вы вправе захотеть запустить этот код параллельно. Рабочие потоки могут быть не лучшим способом сделать это, однако.
Разделение кода с интенсивным использованием процессора на отдельные программы часто является наиболее гибким решением. Это дает вам несколько вариантов:
- порождает новый экземпляр Node для запуска вашего кода, интенсивно использующего процессор (на том же сервере)
- для запуска кода, интенсивно загружающего процессор в облаке " «безсерверные» сервисы, такие как AWS Lambda
- превращают ваш ресурсоемкий код в «микросервис», по сути крошечный веб-сервер, который выполняет любую специализированную обработку и возвращает результат
Далее Чтение
Как работает асинхронность узла (общая картина) https://blog.insiderattack.net/event-loop-and-the-big-picture-nodejs-event-loop-part-1-1cb67a182810
Какие операции блокируют событие l oop и как его избежать https://nodejs.org/uk/docs/guides/dont-block-the-event-loop/