资讯专栏INFORMATION COLUMN

20170612-Event Loop

smallStone / 557人阅读

摘要:具体来说,异步执行的运行机制如下。同步执行也是如此,因为它可以被视为没有异步任务的异步执行。主线程之外,还存在一个任务队列。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
具体来说,异步执行的运行机制如下。(同步执行也是如此,因为它可以被视为没有异步任务的异步执行。)

所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。

主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。

一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

主线程不断重复上面的第三步。

JavaScript 运行机制详解:再谈Event Loop

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87067.html

相关文章

  • Python 的异步 IO:Asyncio 简介

    摘要:是并发的一种方式。并不能带来真正的并行。可交给执行的任务,称为协程。输出等待三秒钟程序退出现在改用输出等待三秒钟程序没有退出三秒钟过后,结束,但是程序并不会退出。但是如果关闭了,就不能再运行了此处异常建议调用,以彻底清理对象防止误用。 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。 Asyncio 是并发(concurr...

    ky0ncheng 评论0 收藏0
  • Python 的异步 IO:Asyncio 之 TCP Client

    摘要:当被调用时,表示已经断开连接。第三版去掉第三版的目的是去掉。协程保持不变,但是已被剔除不再需要请求发送之后,继续异步等待数据的接收,即。的作用是结束那个导致等待的,这样也就可以结束了结束,以便结束。 关于 Asyncio 的其他文章: Python 的异步 IO:Asyncio 简介 Python 的异步 IO:Aiohttp Client 代码分析 如果不知道 Asyncio 是...

    anonymoussf 评论0 收藏0
  • web.py源码分析: 模板(2)

    摘要:上一篇文章源码分析模板说明了的模板的大致工作原理。本文重点讲述模板支持的语法是如何转换生成函数的。模板的名称统一是。模板代码断行模板内容函数内容从结果来看,模板中的断行只是为了不再结果中插入一个多余的换行符而已。 上一篇文章web.py源码分析: 模板(1)说明了web.py的模板的大致工作原理。本文重点讲述web.py模板支持的语法是如何转换生成__template__函数的。 we...

    figofuture 评论0 收藏0
  • Message Loop 原理及应用

    摘要:此文已由作者王荣涛授权网易云社区发布。新消息的添加可能来自于本线程也可能来自于其他线程,甚至包括其他进程中的线程。另一种结束消息循环的方式是强制中止其所属线程的执行,当然了,这是极不推荐的。 此文已由作者王荣涛授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 Message loop,即消息循环,在不同系统或者机制下叫法也不尽相同,有被叫做event loop,...

    时飞 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<