Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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》一书的第11章:异步编程第181页给出的图表中,这些差距意味着什么?_Javascript_Multithreading_Asynchronous_Asynchronous Javascript - Fatal编程技术网

在《雄辩的Javascript》一书的第11章:异步编程第181页给出的图表中,这些差距意味着什么?

在《雄辩的Javascript》一书的第11章:异步编程第181页给出的图表中,这些差距意味着什么?,javascript,multithreading,asynchronous,asynchronous-javascript,Javascript,Multithreading,Asynchronous,Asynchronous Javascript,我正在阅读“Elount Javascript”,第11章关于异步编程,第181页给出了一个图表,对比发送两个网络请求时单线程、多线程和异步技术的差异。黑点表示时间线中提出请求的点。细线表示等待响应所花费的时间。粗线条表示正常的程序执行。我怀疑的是时间上的差距。作者没有提到它们代表什么,所以我很难在概念上做出精确的区分。任何有助于理解的帮助都将不胜感激 异步模型允许同时发生多个事件。 启动操作时,程序将继续运行。什么时候行动 完成后,程序将被通知并访问结果(例如, 从磁盘读取的数据)。 我们可以

我正在阅读“Elount Javascript”,第11章关于异步编程,第181页给出了一个图表,对比发送两个网络请求时单线程、多线程和异步技术的差异。黑点表示时间线中提出请求的点。细线表示等待响应所花费的时间。粗线条表示正常的程序执行。我怀疑的是时间上的差距。作者没有提到它们代表什么,所以我很难在概念上做出精确的区分。任何有助于理解的帮助都将不胜感激

异步模型允许同时发生多个事件。 启动操作时,程序将继续运行。什么时候行动 完成后,程序将被通知并访问结果(例如, 从磁盘读取的数据)。
我们可以用一个小例子来比较同步和异步编程 示例:从网络获取两个资源,然后 合并结果。
在同步环境中,请求函数仅在 它已经完成了它的工作,执行此任务的最简单方法是发出请求 一个接一个。这有一个缺点,即第二个请求将被删除 仅当第一个已完成时才开始。所花费的总时间至少为 两个响应时间之和。
在同步系统中,这个问题的解决方案是启动额外的 控制线程。线程是另一个正在运行的程序,其执行可能会 由于大多数现代计算机都包含多个处理器,多线程甚至可以同时运行 同时,在不同的处理器上。第二个线程可以启动第二个线程 请求,然后两个线程都等待返回结果,然后 它们重新同步以合并结果。
在下图中,粗线表示程序花费的时间 正常运行,细线表示等待网络的时间- 工作在同步模型中,网络所花费的时间是同步的一部分 给定控制线程的时间线。在异步模型中,启动 从概念上讲,网络操作会导致时间线分裂。节目 启动该操作继续运行,并且该操作同时发生, 完成时通知程序


我认为这些间隙代表着将控制权退回到更高的实例。对于JavaScript,这个更高的实例将是浏览器,它将使用其间的时间呈现页面或执行其他任务。对于一般进程,更高的实例是操作系统,它将安排另一个进程的执行,或者如果没有其他进程存在,则物理关闭处理器一小段时间。

好,但间隙和细线之间有什么区别?正在等待的进程是否仍在运行?可能是,这是calles。在JS上下文中,情况可能并非如此,像NodeJS
readFileSync
这样的“阻塞调用”也可能会让引擎/OS执行其他任务,但它会阻止其他JS任务运行。因此,虽然任务没有积极执行,但它仍在阻止执行。