Начиная с узла v10, они представили WorkerThreads. WorkerThread - это совершенно новый экземпляр интерпретатора V8 Javascript. У него есть собственный набор переменных, собственные глобальные переменные и собственный поток выполнения Javascript. Вы не можете напрямую совместно использовать обычные Javascript переменные между основным потоком и workerThread или между workerThreads.
Вы можете напрямую совместно использовать память, если она специально выделена как SharedMemory, например SharedArrayBuffer , но при этом вы открываете себя для условий гонки между двумя потоками, которые обращаются к общей памяти. Таким образом, вы должны использовать Atomics или свою собственную схему управления параллелизмом, чтобы предотвратить состояние гонки при изменении общей памяти.
Основной поток и workerThreads могут отправлять сообщения друг другу, и эти сообщения могут содержать некоторые типы данных структуры, которые будут скопированы с помощью механизма структурированного клонирования и отправлены в другой экземпляр V8. полезно для серверов), чтобы вы могли запустить один или несколько workerThreads для обработки ресурсоемкой работы и оставить основное событие thead l oop свободным и реагировать на входящие события / network / et c ...
Вы также можете сделать нечто подобное, создав несколько процессов nodejs. Но процесс является более тяжелым, чем workerThread, и workerThreads позволяет вам совместно использовать память с SharedMemory, тогда как отдельные процессы этого не делают.