探索小游戏引流的有效策略与未来发展趋势
826
2022-12-02
同步、异步、阻塞和非阻塞
本文主要是个人总结,可能有误!因为有关这几个概念,网络上的表述虽大同小异但众说纷纭,只能按自己的理解再总结一遍。
表面上看,同步和阻塞都是没干完,就等着干完;异步和非阻塞都是没干完,先干别的吧,好像很类似!
实际上,同步和异步是对调用方而言,比如说同步函数、异步函数,异步函数里有个参数是回调函数;
而阻塞、非阻塞都是对处理方(被调用方)而言,针对的是线程。阻塞,就是还没有结果,将线程挂起。线程挂起以后,就是处于死等的状态;非阻塞,还没有结果,线程不挂起,可以继续做别的。
如果从范围大小看,同步异步要大于阻塞非阻塞。同步机制里面,线程可以阻塞,也可以非阻塞。就是说,我这个调用,是同步的,去办一件事,一定要办成一个结果才返回。但在办事的过程中,我可以响应其他事。
同理异步方面,也有阻塞非阻塞之分。
编一个故事来区分这几个概念:
入冬,冷空气来袭,天气反复,有一个小朋友病了,父母带他去看医生。
首先要挂号。母亲抱着小朋友,让父亲去挂号(开辟了一个线程)。
情况1、孩子高烧,母亲很担心孩子的病情,心急如焚,就在旁边等父亲挂好号,然后一起去看医生。过程中她心乱如麻,脑子基本一片空白,一心盼望父亲快点挂完号。这就是同步。
情况2、孩子没有发烧,只是有点咳嗽、流涕,应该是小感冒而已。母亲不怎么担心,她对父亲说,你先去拿个号,好了再叫我们。然后自己就带小孩到医院大院里的儿童设施里玩去了。这就是异步。
情况a 父亲也很担心孩子病情,并且排队挂号的人很多,整个过程中他就一直盯着前面,希望队伍挪动得快一点,也生怕有人插队。以致有小偷掏他口袋,他也浑然不觉。这时,他这个线程处于挂起状态。这就是阻塞。
情况b 父亲毕竟是个男子汉,他认为儿子没有这么娇贵。所以他掏出手机,边排队边玩手机。期间他还接了几个电话,谈了一次工作,安排了一个饭局。他这个线程保持激活,随时对外界做出反应。这就是非阻塞。
情况a 和 情况b 放在情况一里,就是同步阻塞或同步非阻塞;放在情况二里,就是异步阻塞或异步非阻塞。
参考文章:
所谓阻塞/非阻塞,关注的是能不能动。
参考文章:
【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~