Worker threads
https://nodejs.org/api/worker_threads.html
Understanding Worker Threads in Node.js
https://vagrantpi.github.io/2019/11/01/understanding-worker-threads-in-Node.js/
Node.js 併發能力總結
Node.js 使用 Worker threads 時,會建立新的 threads 並將 Node.js instances 跑在裡面。Worker Threads 裡面可用:
1. ArrayBuffers 可以在 threads 間傳遞記憶體空間
2. SharedArrayBuffer 可以無障礙的在 threads 間分享記憶體(只能是 binary data)
3. Atomics 允許你在多線程中安全的使用變數
4. MessagePort asynchronous 的通訊端,用於不同 threads 間傳遞的資料用
5. MessageChannel 可以在兩個 threads 間 asynchronous 的傳遞資料
6. WorkerData 傳遞的資料型態,為任意 Javascript 資料型態
可用的API:
1. const { worker, parentPort } = require(‘worker_threads’) => worker 代表獨立的 thread、parentPort 則是 instance 的 port
2. new Worker(filename) or new Worker(code, { eval: true }) => 兩種啟動 worker 的方法(傳送 filename 或要執行的 code),建議在 production 使用 filename
3. worker.on(‘message’), worker/postMessage(data) => listening message 並將它傳到其他 threads
4. parentPort.on(‘message’), parentPort.postMessage(data) => parentPort.postMessage 傳送資料,父 thread 使用 worker.on('message') 取得資料。父 thread 使用 worker.postMessage() 傳送資料,parentPort.on('message')取得資料。
#thread, worker, 多執行緒, 平行, 運算
留言
張貼留言