如何编写利用线程的Node.js代码?
这是我对节点如何工作的理解:
- 单线程,其中所有JS代码都在其中执行。
- IO /网络呼叫利用场景后面的线程池。 (使用
libuv
这是一个C ++ lib) - 一旦IO操作完成,它的回调就会被推回回调队列,并且回调可以在下一个tick中被事件循环拾取。
我想了解的是如何编写可以利用系统线程的代码?我是用C / C ++编写一个lib并为它提供Javascript绑定吗?
假设我有一些操作/功能不需要IO但是CPU密集型,所以我想在多个线程中运行它。我如何在Node中做到这一点?
回答如下:我的理解是,这不能用Node完成。当然,您可以用另一种语言编写程序并编写一些绑定,但Node本身不支持多线程。您可以使用多程序编程:启动Node程序的多个实例并通过HTTP交换消息。然后,您的操作系统将处理不同CPU核心上的程序实例的分发。
如何编写利用线程的Node.js代码?
这是我对节点如何工作的理解:
- 单线程,其中所有JS代码都在其中执行。
- IO /网络呼叫利用场景后面的线程池。 (使用
libuv
这是一个C ++ lib) - 一旦IO操作完成,它的回调就会被推回回调队列,并且回调可以在下一个tick中被事件循环拾取。
我想了解的是如何编写可以利用系统线程的代码?我是用C / C ++编写一个lib并为它提供Javascript绑定吗?
假设我有一些操作/功能不需要IO但是CPU密集型,所以我想在多个线程中运行它。我如何在Node中做到这一点?
回答如下:我的理解是,这不能用Node完成。当然,您可以用另一种语言编写程序并编写一些绑定,但Node本身不支持多线程。您可以使用多程序编程:启动Node程序的多个实例并通过HTTP交换消息。然后,您的操作系统将处理不同CPU核心上的程序实例的分发。