Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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 workers?_Javascript_Html_Performance_Html5 Canvas - Fatal编程技术网

Javascript 线程如何帮助使用web workers?

Javascript 线程如何帮助使用web workers?,javascript,html,performance,html5-canvas,Javascript,Html,Performance,Html5 Canvas,我有一个关于网络工作者的普遍问题,我很难解决。我知道他们在另一个线程中进行背景计算,因此他们从用户所在的窗口中卸下负载 然而,我对“其他线程”是否意味着在计算机上运行不同的程序、打开一个单独的浏览器,或者它是否像同一浏览器中的一个新选项卡感到困惑。我觉得这是后一种情况,但我不是100%确定,我找不到好的解释 这对我们使用网络工作者所能做的事情的局限性有什么影响 提前谢谢 webworker的工作方式类似于独立的执行线程。一个计算机进程中可以同时运行多个线程。如果有多个处理器,这些多线程实际上可以

我有一个关于网络工作者的普遍问题,我很难解决。我知道他们在另一个线程中进行背景计算,因此他们从用户所在的窗口中卸下负载

然而,我对“其他线程”是否意味着在计算机上运行不同的程序、打开一个单独的浏览器,或者它是否像同一浏览器中的一个新选项卡感到困惑。我觉得这是后一种情况,但我不是100%确定,我找不到好的解释

这对我们使用网络工作者所能做的事情的局限性有什么影响


提前谢谢

webworker的工作方式类似于独立的执行线程。一个计算机进程中可以同时运行多个线程。如果有多个处理器,这些多线程实际上可以同时运行。如果只有一个处理器,那么计算机上的操作系统会处理不同线程之间的时间切片,这样每个线程都会运行一段时间,然后下一个线程会运行一段时间,在偶然的观察者看来,它们似乎在同一时间运行

在浏览器中,webworker实际上是一个独立于浏览器窗口线程(浏览器中打开的每个浏览器页面都有一个)运行的执行线程。浏览器窗口线程有许多限制。主要限制是,当主浏览器线程中没有运行javascript代码时,它仅处理用户事件(鼠标移动、鼠标单击、键盘事件等)。因此,如果要在主浏览器线程中运行一些长时间运行的javascript代码,浏览器将“显示”为锁定状态,并且在javascript运行时不会处理任何用户事件。这通常被认为是一种糟糕的用户体验

但是,如果您在webworker中运行此javascript,它可以在不阻塞主浏览器窗口线程中事件处理的情况下完成长期运行的任务。当它完成长时间运行的计算后,它可以向主浏览器窗口线程发送消息,并且可以处理结果(例如,显示在页面中或任何特定操作)

有一些方法可以绕过主浏览器线程的限制,将您的工作分成小块,并在一个循环计时器上执行小块工作。但是,使用web worker线程可以显著简化编程


网络工作者本身无法以任何方式访问浏览器页面。他们无法从中读取值或修改值-他们无法运行动画等。。。这将它们的有用性限制在一些与页面更加独立的任务上。经典用法是一些长时间运行的计算(例如,分析图像中的数据、执行ajax调用、执行一些复杂的计算等等)。Web工作者可以通过消息传递系统与主线程通信。这有点像留下语音信箱。webworker调用主线程并为其留下消息。下次主线程无事可做时,它会检查是否有来自web工作人员的消息,如果有,它会处理这些消息。通过这种方式,主线程和web worker线程可以通信,但在执行其他操作时,一个线程不能中断另一个线程。

web worker就像独立的执行线程一样工作。一个计算机进程中可以同时运行多个线程。如果有多个处理器,这些多线程实际上可以同时运行。如果只有一个处理器,那么计算机上的操作系统会处理不同线程之间的时间切片,这样每个线程都会运行一段时间,然后下一个线程会运行一段时间,在偶然的观察者看来,它们似乎在同一时间运行

在浏览器中,webworker实际上是一个独立于浏览器窗口线程(浏览器中打开的每个浏览器页面都有一个)运行的执行线程。浏览器窗口线程有许多限制。主要限制是,当主浏览器线程中没有运行javascript代码时,它仅处理用户事件(鼠标移动、鼠标单击、键盘事件等)。因此,如果要在主浏览器线程中运行一些长时间运行的javascript代码,浏览器将“显示”为锁定状态,并且在javascript运行时不会处理任何用户事件。这通常被认为是一种糟糕的用户体验

但是,如果您在webworker中运行此javascript,它可以在不阻塞主浏览器窗口线程中事件处理的情况下完成长期运行的任务。当它完成长时间运行的计算后,它可以向主浏览器窗口线程发送消息,并且可以处理结果(例如,显示在页面中或任何特定操作)

有一些方法可以绕过主浏览器线程的限制,将您的工作分成小块,并在一个循环计时器上执行小块工作。但是,使用web worker线程可以显著简化编程

网络工作者本身无法以任何方式访问浏览器页面。他们无法从中读取值或修改值-他们无法运行动画等。。。这将它们的有用性限制在一些与页面更加独立的任务上。经典用法是一些长时间运行的计算(例如,分析图像中的数据、执行ajax调用、执行一些复杂的计算等等)。Web工作者可以通过消息传递系统与主线程通信。这有点像留下语音信箱。webworker调用主线程并为其留下消息。下次主线程无事可做时,它会检查是否有来自web工作人员的消息,如果有,它会处理这些消息。通过这种方式,主线程和web工作线程可以通信,但一个线程在运行时不能中断另一个线程