[Linux] 同步异步阻塞非阻塞的区别

第一次有人形容的这么形象

同步和异步
传统意义上的同步,指的是两种事物一样进行同样的动作或者处于同样的状态。
在计算机术语中:同步指的是在一次同步方法调用开始时,调用方必须主动等待被调用对象返回才能进行下一步操作。
而异步指的是再一次方法调用开始调用者不必等待调用者返回才能去处理别的事情,而是被调用者主动或者其他方通知调用者被调用对象返回了。

举例子:你现在需要照顾一个小宝宝,现在小宝宝睡着了,在他睡醒时必须有人照顾,同步就是你一直关注小宝宝发现他是否苏醒,而异步相当于你在床前玩手机等着他哭泣告诉你他醒来了。

阻塞和非阻塞
阻塞:表示事情在没有得到返回,调用者不能去处理其他事情,直到调用返回,才能处理其他事情。
非阻塞:表示调用方不用等待返回才能处理其他事情,可以在调用没有返回的时候处理其他事情。
还是上面例子:
阻塞表示:在等待小宝宝苏醒过程你不能离开他的床,不能去处理其他事情。
非阻塞表示:你不用一直在床前等待而是可以去处理其他的事情。

组合
同步阻塞:你在床前等待小宝宝并观察他直到苏醒。
同步非阻塞:你在客厅看电视,但是你过一会观察他一次,看他是否苏醒。
异步阻塞:你在床前玩手机,等他哭泣告诉你他醒了。
异步非阻塞:你在客厅看电视,等他哭泣告诉你他醒了。
 

你可能感兴趣的:([Linux] 同步异步阻塞非阻塞的区别)