マルチスレッドで処理をするサンプル
マルチスレッドを扱いやすくするためにworkerpoolを使う(インストールが必要:npm i workerpool) スレッド間で値をやり取りするとシリアライズが行われ、値が持っているいくつかの情報が破損するため注意。
code:main.js
const workerpool = require('workerpool')
const pool = workerpool.pool('./worker.js')
!(async () => {
// worker側で定義された"fib"関数に46を渡して実行する
const result = await pool.exec('fib', 46) .catch(err => console.error(err))
console.log('Result:', result)
// workerを終了させる(ボットで使う場合は基本的に不要)
pool.terminate()
})()
code:worker.js
const workerpool = require('workerpool')
function fib(n) {
if (n < 2) return n
return fib(n - 2) + fib(n - 1)
}
// fib関数を登録
workerpool.worker({ fib })