تكرار السؤال: …
الإجابة المختصرة
الـ Worker Threads تعمل داخل نفس العملية لكن لكل منها V8 isolate و Heap مستقل، ولا تتشارك الذاكرة إلا صراحةً عبر SharedArrayBuffer، وهي أخف في الإنشاء، بينما الـ Child Processes هي عمليات نظام تشغيل كاملة ومستقلة الذاكرة.
الشرح
وحدة node:worker_threads تتيح تنفيذ كود JavaScript كثيف الـ CPU في خيوط منفصلة دون حظر الـ Event Loop، مع إمكانية مشاركة الذاكرة بشكل فائق السرعة عبر SharedArrayBuffer والرسائل المهيكلة MessagePort. في المقابل، تُستخدم node:child_process لتشغيل برامج نظام خارجية أو سكريبتات لغات أخرى (مثل Python أو bash).
مثال بالكود
import { Worker } from "node:worker_threads";
const worker = new Worker("./heavy-calc.js", { workerData: { max: 1e9 } });
worker.on("message", result => console.log("Result:", result));أخطاء شائعة
- استخدام Worker Threads لمهام الـ I/O العادية التي تبرع فيها Node.js بالفعل، مما يضيف تكلفة إدارة الخيوط بلا فائدة.