当前位置: 首页 > 后端技术 > PHP

阻塞、非阻塞、异步、同步

时间:2023-03-30 05:31:44 PHP

1。例子老张喜欢喝茶,废话少说,烧开水。人物:老张,两个水壶(普通水壶,简称水壶;会响的水壶,简称响水壶)。1老张把水壶放在火上,等水烧开。(同步阻塞)老张觉得有点傻2老张把水壶放在火上,去客厅看电视,时不时去厨房看看水开没。(同步非阻塞)老张还是觉得有点傻,于是就高端了,买了一个可以吹口哨的水壶。水烧开后,能发出很大的滴~~~~声。3老张把水壶放在火上,等水烧开。(异步阻塞)老张觉得这么傻没意义。4老张把水壶放在火上,到客厅看电视,水壶还没响就不看了,响了就去拿水壶。(异步非阻塞)老张自以为聪明。所谓同步和异步只是针对kettle而言的。普通水壶,同步;响亮的水壶,异步。虽然可以工作,但是水壶可以提醒老张工作结束后水已经烧开了。这是普通水壶无法企及的。同步只能让调用者轮询自己(情况2),导致老张效率低下。所谓阻塞和非阻塞只是针对老张而言的。站等老张,阻拦;老张看电视,不遮挡。案例1和案例3,老张被堵了,老婆什么时候给他打电话都不知道。3环水壶虽然是异步的,但是对于等待的老张来说意义不大。所以异步一般和非阻塞结合使用,这样才能发挥异步的效用。阻塞、非阻塞:动作发起者是否检测,直接等待的是阻塞,时不时检测到的是非阻塞。异步、同步:与服务端相比,处理返回结果不提醒是同步的,处理返回结果并提醒请求者是异步的。显然,异步可以节省请求者的时间。在事件处理过程中,请求者不必等待,可以做其他事情。服务器完成操作后,会通知请求者或线程接受处理结果。