Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/web浏览器线程模型_Javascript_Multithreading - Fatal编程技术网

Javascript/web浏览器线程模型

Javascript/web浏览器线程模型,javascript,multithreading,Javascript,Multithreading,如果我运行javascript代码,例如对计时器执行某些操作,并且该代码嵌入到web浏览器的选项卡1和选项卡2的网页中,那么客户端代码是否可以并发运行?还是javascript客户端代码总是只在一个浏览器线程中运行 或者,如果有一个包含父帧和子帧的帧集,那么javascript代码在这种情况下是否可以并发运行 是否有标准的指定型号,或是否依赖于浏览器 我的主要目标环境是IE9,所以我想知道那里发生了什么 编辑 我不是在寻找线程支持或如何在javascript中执行线程。我个人认为没有必要。这也让

如果我运行javascript代码,例如对计时器执行某些操作,并且该代码嵌入到web浏览器的选项卡1和选项卡2的网页中,那么客户端代码是否可以并发运行?还是javascript客户端代码总是只在一个浏览器线程中运行

或者,如果有一个包含父帧和子帧的帧集,那么javascript代码在这种情况下是否可以并发运行

是否有标准的指定型号,或是否依赖于浏览器

我的主要目标环境是IE9,所以我想知道那里发生了什么

编辑 我不是在寻找线程支持或如何在javascript中执行线程。我个人认为没有必要。这也让生活变得更加复杂。我只想知道我是否需要担心它,如果需要,在哪些浏览器上。

对于单个JavaScript“对象空间”(浏览器中的单个页面或node.js中的解释器实例),最多有一个线程在运行。事实上,在JavaScript上下文中谈论线程是没有意义的。JS执行模型是基于事件循环和回调的

不同的帧永远不能同时运行,因为它们可以访问彼此的DOM(并通过扩展访问任意对象)。这将使线程不安全


对于web workers,无法直接访问任何跨worker边界的数据结构,因此线程是不可见的,可以安全地执行。这里唯一的通信是通过消息传递。

两个选项卡完全不相关;这方面没有标准。例如,Chrome甚至在不同的进程中运行它们,而Opera只在一个线程中完成所有工作。为什么你认为帧只使用消息进行通信?两个页面(不受SOP限制)可以直接和另一个页面的元素交互。@Bergi对!我相应地改变了答案。这实际上表明不同的帧不能同时运行。