Skip to content

Node.js – Web Workers

 โดยปกติ Node.js โดยใช้ event-loop ทำงานด้วย thread เพียง thread เดียว ปัญหาคือถ้ามี task ที่เป็น sync ทำงานนานๆ มันจะไป block event-loop (เพราะค้างอยู่ใน call stack) ทำให้โปรแกรมทำงานต่อไม่ได้แม้ตัวมันเองจะบอกว่าทำงานแบบ async ก็ตาม

เพื่อแก้ปัญหาดังกล่าวเลยเกิด Web Workers ขึ้น โดยสามารถแตก thread ไปประมวลผลโดย thread หลักไม่โดน block นอกจากแก้ปัญหาที่ว่านี้แล้วในงานที่ต้องการประมวลผลหนักๆ ก็สามารถแตก thread สร้างหลายๆ worker ช่วยกันทำงานได้ด้วย

module สำหรับ Node.js ดูได้จากลิงก์นี้ครับ https://www.npmjs.com/package/webworker-threads

Web Workers ใช้บน browser ได้ด้วยนะครับ (จริงๆ มันเริิ่มจาก browser ก่อนนั่นแหละ)

  1. http://www.html5rocks.com/en/tutorials/workers/basics
  2. https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

Be First to Comment

Leave a Reply

Your email address will not be published.