但是这种创建进程的方式会牺牲共享内存,并且数据通信必须通过json进行传输。(有一定的局限性和性能问题)
Node.js 并没有其它支持多线的程语言(如:java),诸如"synchronized"之类的关键字来实现线程同步的概念。Node.js的 worker_threads 区别于它们的多线程。
如果添加线程,语言本身的性质将发生变化,所以不能将线程作为一组新的可用类或函数添加。
Node端:采用了和 Web Worker相同的思路来解决单线程中大量计算问题 ,官方提供了 child_process 模块和 cluster 模块, cluster 底层是基于child_process实现。
child_process、cluster都是用于创建子进程,然后子进程间通过事件消息来传递结果,这个可以很好地保持应用模型的简单和低依赖。从而解决无法利用多核 CPU 和程序健壮性问题。
Node V10.5.0: 提供了实验性质的 worker_threads模块,才让Node拥有了多工作线程。
Node V12.0.0:worker_threads 已经成为正式标准,可以在生产环境放心使用。
