You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js v16.7.0如何使用第二线程运行定时日期比对函数

解决方案

Node.js v16.7.0 已稳定支持 worker_threads 多线程模块,你可以通过工作线程运行周期性比对逻辑,完全不阻塞主线程的事件监听任务。

实现步骤

1. 主线程代码(存放原有事件监听逻辑)

const { Worker } = require('worker_threads');

// 启动独立的工作线程运行日期比对逻辑
const compareWorker = new Worker('./date-compare-task.js');

// 可通过postMessage向工作线程动态传递比对参数,示例:
// compareWorker.postMessage({ targetDate: new Date('2024-12-31') })

// 下方直接写你原有的其他事件监听代码即可,不会被比对逻辑阻塞

2. 工作线程代码(date-compare-task.js)

const { parentPort } = require('worker_threads');

// 你的原有比对函数
function dateCompare(d1, d2){
    if(d1 <= d2){
        // 此处为JSON配置编辑逻辑,已实现无需处理
    }
}

// 每100ms执行一次比对
setInterval(() => {
    // 如果需要使用主线程传递的参数,可通过message事件接收:
    // parentPort.on('message', (params) => { /* 调用dateCompare */ })
    // 示例为固定参数,可按实际需求调整
    const currentDate = new Date();
    const targetDate = new Date('2024-12-31');
    dateCompare(currentDate, targetDate);
}, 100);

注意事项

  • 主线程和工作线程通过postMessage传递数据,数据会自动做结构化克隆,不会出现多线程内存共享冲突
  • 如果JSON配置编辑逻辑涉及公共文件写入,建议加文件锁,避免主线程和工作线程同时写文件出现内容异常
  • 工作线程无法直接访问主线程的变量和方法,所有跨线程交互都通过消息事件完成

内容的提问来源于stack exchange,提问作者Mikachu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:36:04