网络通信过程中的四个概念:同步、异步、阻塞、非阻塞;看了些许文章的解说,发现并不是很明白,其中一个比较风趣的文章是这么写的!
老张烧水,水壶放到炉子上,然后专心等待水烧开~~~同步阻塞,(老张太傻了)
老张烧水,水壶放到炉子上,然后去客厅看电视,时不时去看看水有没有烧开~~~同步非阻塞(老张觉得自己变聪明了)
老张烧水,使用响水壶,水放到炉子上后等待水壶响~~~异步阻塞(老张还是有点傻)
老张烧水,使用响水壶,水放到炉子上后就去客厅看电视,等待水壶响后提壶~~异步非阻塞(老张觉得自己很聪明)
文章说的有些道理,但也并不一定对,自行体会感悟吧~
下面说说个人对同步、异步的理解:
首先说同步&异步
就是看调用之后会不会等待,等待就是同步,不等待就是异步;
阻塞&非阻塞
这儿的歧义最大,颇有仁者见仁,智者见智的意思;
一种观点认为:等待过程中,去干别的事情,就是非阻塞,只是专心等待结果就是阻塞;这样看了异步就不存在阻塞问题了
还有一种观点:需要由发起线程去处理结果的是阻塞(比如:时不时检测有没有结果,也就是发起线程不能结束),由注册回调或者其他部件去处理结果的称为非阻塞。