nodejs threads模块线程间的通信
时间: 2023-08-03 22:03:38 浏览: 126
Node.js 的 `worker_threads` 模块提供了一种创建和管理多线程的方式。线程之间的通信可以通过以下方式实现:
1. 使用 `worker.postMessage()` 方法将消息发送给其他线程。在接收到消息时,线程会触发 `message` 事件。
2. 在接收到 `message` 事件后,可以使用 `worker.postMessage()` 方法将回复消息发送给发送者。
以下是一个使用 `worker_threads` 模块实现线程间通信的示例:
```javascript
// main.js
const { Worker } = require('worker_threads');
const worker = new Worker('./worker.js');
worker.on('message', message => {
console.log(`Received message from worker: ${message}`);
});
worker.postMessage('Hello from main thread!');
// worker.js
const { parentPort } = require('worker_threads');
parentPort.on('message', message => {
console.log(`Received message from main thread: ${message}`);
parentPort.postMessage('Hello from worker thread!');
});
```
在上述示例中,主线程创建了一个 `Worker` 对象,并通过 `worker.postMessage()` 方法将消息发送给工作线程。工作线程在接收到消息后,使用 `parentPort.postMessage()` 方法将回复消息发送给主线程。主线程在接收到工作线程的回复消息后,触发 `message` 事件并将消息打印到控制台。
需要注意的是,线程之间的通信是异步的,因此需要使用回调函数或者 Promise 等方式来处理异步操作。此外,线程之间的通信也需要考虑同步和互斥等线程安全问题。
阅读全文