1. 程式人生 > >同步異步 阻塞非阻塞

同步異步 阻塞非阻塞

同步異步 相關 工作 不能 blog 在那 不用 lB 滿了

劫匪沖進某花園小別墅,端著AK47,向某衰男甩過去一個袋子:說,快,把現金拿出來給我放進去,這個時候劫匪一直跟著衰男去裝錢,看錢裝滿了他就拿走,此時劫匪是阻塞 的,因為劫匪不能幹其他的,得看著這個衰男,免得他搞鬼。

想象下,如果劫匪等衰男自己去裝錢,在錢裝滿之前,他自己可以到處翻箱倒櫃,找點值錢的首飾黃金之類的,那麽這個時候劫匪就是非阻塞 的,因為劫匪並沒有阻塞在衰男去裝錢這個環節上,劫匪可以自由活動做點其他的小買賣。

再來回顧下上面的情節,如果劫匪在搶劫時需要不時自己看看衰男把錢裝好了沒有,那麽此時劫匪是在同步 工作,因為他在等待衰男把錢裝好,自己要不停的關註下。

當然,劫匪可以給衰男說:把錢裝好了,你自己過來找我。這個時候劫匪可以繼續等著不做其他的事情,也可以去做點其他的事情,但是劫匪可以不用去看衰男是否把錢裝好,因為衰男錢裝好了會自動通知劫匪:大哥,錢好了,你拿走吧。這個時候劫匪就是異步 在工作,他提供了一個callback機制給衰男。

可以總結下了:

同步/異步: 消息通知機制相關=>需要自己關註還是提供callback

阻塞/非阻塞:等待消息時的狀態=>是否可以幹別的事情

可以相互組合:

同步阻塞: 劫匪看著衰男把錢裝好,不能幹其他事情

同步非阻塞:劫匪自己也到處搜索寶貝,但是還要不時跑回來看看錢裝好沒有。

異步非阻塞:劫匪自己也到處搜索寶貝,衰男把錢裝好了自動過來告訴劫匪好了

異步阻塞: 劫匪就在那裏傻等著,也不用管錢是否裝好,衰男把錢裝好了自動過來告訴劫匪好了

同步異步 阻塞非阻塞