摘要:总结同步服务依赖任务的执行结果异步服务不依赖任务的执行结果阻塞服务执行时线程会出现等待状态非阻塞不服务执行时线程不会出现等待状态
同步、异步、堵塞、非堵塞对于程序员来说都不会陌生,无论是看相关书籍,还是面试,都会涉及到这四个词,下面给出我的理解,如有不对请多指教。
同步与异步服务(Service)被分割成多个任务(Task),服务的执行结果是否要求任务最终按顺序执行。服务的结果依赖所有任务的执行称为同步服务;服务的结果不依赖所有的任务称为异步服务。下面举例说明:
同步
服务(Service)开始被分割为TaskA,TaskB,TaskC三个任务,TaskB的执行依赖于TaskA的执行,服务最后结果依赖于TaskB、TaskC,所有任务对业务来说都是同步操作。(这里也可以把TaskA、TaskB理解成一个任务,当然啦可以把TaskA、TaskB、TaskC理解成一个任务。我们平时写的比较多的就是同步代码)
异步
服务(Service)开始被分割为TaskA,TaskB,TaskC三个任务,TaskB的执行依赖于TaskA的执行,业务最后结果依赖于TaskB,TaskC的执行结果或者说TaskC中涉及到的数据对服务来说不重要甚至是不需要,所以TaskC任务对于业务来说是一个异步操作,也可以说是一个异步服务。
阻塞和非阻塞如果说线程是程序工作的基本单位、服务是要处理的内容,那么阻塞是指工作线程需要等待服务的响应结果才会处理下一个服务,否则工作线程会一直处于等待状态。非阻塞是指工作线程不需等待结果直接处理下一个服务。
阻塞
服务的执行在Handler结果返回之前,工作线程会一直等待。
非阻塞
服务的执行不依赖Handler返回结果,工作线程直接处理下一个服务。
总结同步:服务依赖任务的执行结果
异步:服务不依赖任务的执行结果
阻塞:服务执行时线程会出现等待状态
非阻塞:不服务执行时线程不会出现等待状态
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68118.html
摘要:回调大多出现在请求,用于处理收到的请求结果。回调函数和异步一开始我被回调和异步有点搞晕了。异步编程的实现就我目前知道两种回调函数和事件监听,其实看了阮神的异步编程的文章和下面的评论之后得出的理解。为了不影响的执行,我们可以把写成的回调函数。 前言 一个刚入前端的小菜,虽然以前看到过关于回调的文章,但是呢,理解起来有点费劲啊。当时的脑海里就一个概念。 回调:大多出现在Ajax请求,用于处...
摘要:的单线程,与它的用途有关。特点的显著特点异步机制事件驱动。队列的读取轮询线程,事件的消费者,的主角。它将不同的任务分配给不同的线程,形成一个事件循环,以异步的方式将任务的执行结果返回给引擎。 这两天跟同事同事讨论遇到的一个问题,js中的event loop,引出了chrome与node中运行具有setTimeout和Promise的程序时候执行结果不一样的问题,从而引出了Nodejs的...
摘要:总而言之,只有先构建了对应的你才能用脚本去操作它所以这就是如果在中写内联不加经常报错的原因,通常因为找不到对应的这也是我们为什么通常把外链放在底部进行加载确保了和加载完毕主要内容已经呈现给用户确保了和加载完毕所有处于可操作状态 前言 我就想随便找个地方放东西不行吗? 看别人写的代码,中写原生js无一例外加了window.onload, jquery示例中无一例外的加了 $(funct...
阅读 547·2021-11-18 10:02
阅读 1025·2021-11-02 14:41
阅读 637·2021-09-03 10:29
阅读 1873·2021-08-23 09:42
阅读 2691·2021-08-12 13:31
阅读 1173·2019-08-30 15:54
阅读 1927·2019-08-30 13:09
阅读 1412·2019-08-30 10:55