2020年12月24日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
拿网上老张喝茶为例子:
同步阻塞:
老张把水壶放到火上,在旁边啥也不干,阻塞等待水开。
同步非阻塞:
老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有(在客厅和厨房之间来回跑,效率很低,基本不会这样做)。
异步阻塞:
老张买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音,然后老张把响水壶放到火上,在旁边啥也不干,阻塞等待水壶发出声音(因为有声音就表示水开了)。
异步非阻塞:
老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。
总结:
综上,同步/异步关注的是消息通信机制 (synchronous communication/ asynchronous communication),而阻塞/非阻塞关注的是程序(线程)等待消息通知时的状态。
参考文献
https://blog.csdn.net/yanerhao/article/details/81275966
https://www.cnblogs.com/mhq-martin/p/9035640.html
https://www.zhihu.com/question/19732473