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

执行绪与同步、非同步

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

名词解释

行程/程序(process):

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

执行绪(thread):

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

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

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


同步:描述对象为程式语言本身的运作方式,以javascript来说,程式码会是依次执行,不会突然跳掉下个程式码。
例子:
http://img2.58codes.com/2024/20143762tMQbFNBNE8.png
http://img2.58codes.com/2024/20143762NGOZKY1dw7.png非同步:以javascript来说,遇到setTimeout、event callback、Http request 这些无法预期触发执行时间的操作,会先行放到task queue/Event Queue/Job Queue/Callback Queue(皆同义)的地方,等待其他可以执行的程式码执行完毕后,回头再处理。
http://img2.58codes.com/2024/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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章