工作线程可以并行运行在不同的CPU核心上吗?

时间:2016-04-18 08:12:22

标签: javascript multithreading operating-system

JavaScript引入了window.Worker,允许脚本并行运行。想进一步了解并行性。示例代码是,

<script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
</script>

如果操作系统遵循1-1线程模型,

enter image description here

然后,是否将Web worker用户线程分配给专用内核线程?

2 个答案:

答案 0 :(得分:1)

是的,它可以。它一般取决于浏览器,但重点是允许真正的并行性,如果没有真正的线程就无法实现:

例如检查google book

答案 1 :(得分:1)

HTML5规范有一个工人概念,但没有规定它们是如何实现的。

如何实现工作者取决于浏览器。实施可能会选择实施工人:

  • 作为操作系统进程
  • 作为操作系统线程
  • 使用自己的调度算法(例如,在为自己的多任务支持的操作系统编写的浏览器中,如MS-DOS)
  • 或其选择的任何其他方式

例如,V8(在Chrome中找到)使用操作系统线程来实现线程 - 所以如果你看一下V8的posix.cpp,你会看到对pthreads的引用。典型的现代操作系统通常会尝试在CPU内核之间传播线程。