SuperAPI AI 工具集

bun-workers

编程与开发

查看项目

更新于 10-15 21:33

技能介绍

用途:本技能用于在 Bun 中实现 Web Workers 与 Node.js worker_threads,处理并行执行与后台任务。

主要能力:支持 Web Worker 基本用法(new Worker、postMessage、onmessage、onerror);支持通过 URL 或 Blob URL 创建 Worker;支持 Transferable Objects 零拷贝转移(如 ArrayBuffer 所有权转移后原对象失效);支持 SharedArrayBuffer 共享内存与 Atomics 原子操作保证线程安全;支持 worker_threads 的 isMainThread、parentPort、workerData 及 message/error/exit 事件;提供 Worker 池实现,含任务队列与并发调度;提供并行映射、CPU 密集型任务与进度上报、MessageChannel 实现 Worker 间通信、错误处理与终止等模式。

使用方式:主线程用 new Worker(new URL("./worker.ts", import.meta.url)) 创建 Worker 并 postMessage 通信;worker_threads 侧用 new Worker(import.meta.filename, { workerData }) 启动,工作线程经 parentPort?.postMessage 返回结果;转移大数据时在 postMessage 第二参数传入可转移对象;共享状态用 SharedArrayBuffer 配合 Atomics.add、Atomics.notify;Worker 池通过 execute 提交任务并 await 结果,结束时 terminate。

适用场景:CPU 密集型计算、大规模数据处理、并行映射、后台任务与多线程协作。

限制:消息数据必须可序列化,不可发送函数或 DOM 对象,否则出现 DataCloneError;不可转移数据会报无法序列化;转移后原 buffer 被分离;需注意 Worker 过早终止与 URL 路径错误。资料提到在优化 Worker 池、内存管理与性能分析时加载 references/optimization.md,在复杂协调、背压与错误恢复时加载 references/patterns.md。其他细节暂未提供。