キューを使用してワーカーの受信メッセージを処理するパフォーマンスを改善しようとしています。
ただし、スリープ機能の完了には、1 ミリ秒ではなく 16 ~ 30 ミリ秒かかります。この大きな遅延なく、またアプリを 100% CPU に保つことなく、キューを処理するより良い方法はありますか?
私はこのようなことをしています:
var actions = new Queue();
parentPort.on('message', (msg) => actions.enqueue(msg));
loopy();
async function loopy() {
while (true) {
if (actions.size() > 0) {
let action = actions.dequeue();
//do work
continue;
}
await sleep(1);
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
どんな助けでも大歓迎です。ありがとう!