同步和异步:
同步:调用者在发出一个调用时,若被调用函数没有操作完成得到结果,则一直不返回,直到被调用函数操作完成并且得到结果,才进行返回
异步:调用者在发出一个调用时,无论被调用函数有没有操作完成,都立即返回,等待被调用函数操作完成并且得到结果时,通知调用者
阻塞和非阻塞:
阻塞:调用者在发出一个调用时,没有得到结果时一直等待,不做任何其他事情
非阻塞:调用者在发出一个调用时,没有得到结果时不会一直等待,而是自顾自做任何其他事情
网络I/O与生活的联系:
同步阻塞:
去餐馆吃饭,点完餐后,由于不知道什么时候能做好,就一直等待,什么事都不做(简直是中国好吃货)
同步非阻塞:
去餐馆吃饭,点完餐后,由于不知道什么时候能做好,只好先出去玩,每隔一段时间回来问一下菜做好了没
异步阻塞:
去餐馆吃饭,点完餐后,留下一个电话,服务员告知说菜做好就会打电话给我们,我们在某个地方一直等待,什么事都不做(还是一个好吃货)
异步非阻塞:
去餐馆吃饭,点完餐后,留下一个电话,服务员告知说菜做好就会打电话给我们,只好先出去玩,直到接到服务员打来的电话
多路复用:
我是一个点菜员,有好多客人点了菜,都留下了电话,都跑出去玩了。我要不断看厨房哪个客人的菜好了,好了的话就打电话叫他来吃(中国好服务员)
网络I/O在linux中:
同步阻塞:
同步非阻塞(轮询):
异步非阻塞:
多路复用: