为了转生而点技能-javascript,day3(观念厘清-执行绪与同步、非同步

执行绪与同步、非同步

本篇是统整网路上各资源节录而成,如有观念错误的地方,还请大大们多多鞭策。

名词解释

行程/程序(process):

当一个程序(computer program)被执行,作业系统就会为这个程序生成一个程序,以管理该程序执行过程中记忆体和系统资源的分配。

执行绪(thread):

执行绪是构成程序的小单元,一个程序,至少包含一个或多个执行绪;CPU会进行排成(Scheduling),并依照优先级数,给予不同的执行绪相对应的运算资源。
https://ithelp.ithome.com.tw/upload/images/20211121/20143762Pd1bQdIiaz.jpg

  1. 单执行绪:描述对象为CPU系统或是浏览器系统运作的方式,代表该系统只能一个任务一个任务依序完成,遇到比较耗时的任务时,还未执行的任务就会处於等待状态,一定要等到前面的任务完成了,才会往後执行。

  2. 多执行绪:指CPU可以同时实现多个执行绪并行执行的技术;或是,作业系统也可以通过快速的在不同执行绪之间进行切换,由於时间间隔很小,来给使用者造成一种多个执行绪同时执行的假象。
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762O9mdhBM8IB.png


  1. 同步:描述对象为程序语言本身的运作方式,以javascript来说,程序码会是依次执行,不会突然跳掉下个程序码。
    例子:
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762tMQbFNBNE8.png
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762NGOZKY1dw7.png
  2. 非同步:以javascript来说,遇到setTimeout、event callback、Http request 这些无法预期触发执行时间的操作,会先行放到task queue/Event Queue/Job Queue/Callback Queue(皆同义)的地方,等待其他可以执行的程序码执行完毕後,回头再处理。
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762ZBDayndbNH.png

参考资料:
1.* From Wikipedia-Process (computing)*:https://en.wikipedia.org/wiki/Process_(computing)
2. JavaScript 深入浅出 Event Loop、Job Queue:https://shawnlin0201.github.io/JavaScript/JavaScript-Event-Loop-and-Job-Queue/
3. 如何理解单执行绪、多执行绪?如何选择多执行绪、多程序?:https://www.itread01.com/ixyfq.html
4. 以生活的例子说明单执行绪和多执行绪:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/432463/#outline__6
5. JavaScript - 单执行绪、同步与非同步:https://chiangyuchi.github.io/2019/02/09/2019-02-10/
6. JavaScript 单执行绪(Single Thread):https://hoyis-note.coderbridge.io/2021/05/17/javascript-%E5%96%AE%E5%9F%B7%E8%A1%8C%E7%B7%92-%E5%90%8C%E6%AD%A5%E5%92%8C%E9%9D%9E%E5%90%8C%E6%AD%A5/
7. 浅析 JS 中的 EventLoop 事件循环(新手向):https://segmentfault.com/a/1190000019313028
8. 异步程序设计与事件回圈:https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part4/eventloop.html


<<:  CLOUDWAYS主机限时6折优惠码,只到2021/12/1

>>:  为了转生而点技能-javascript-基础观念练习题(hoisting、RHS、LHS、scope)。

AWS架构完善的五个支柱

Amazon从以下SPORC角度提供了关於架构良好的AWS解决方案的良好文件: 安全 (Secur...

D11 - 彭彭的课程#Python 流程控制:回圈进阶控制,break、continue、else 命令

趁着这个疫情看似趋缓的假期 今天跑去万里吃螃蟹 萧好吃啦XDD 感觉现在的课程已经开始需要动动脑了X...

Day27 slot

slot「插槽」就是将子原件上开个位置,并将外层元件放置在子元件位置上,在复杂的结构中适合使用 插槽...

[Day20] - Vue 的 Html 字串处理 ( Html String to Ast Object )

day-13 介绍 , 当资料改变时 , 我们可以利用 _render 来更新 dom 可是如果每次...

JS 如何运行 DAY45

这里要开始介绍 JS核心 首先要先来介绍 JS究竟是怎样运行的 其实浏览器(Browser)是看不懂...