日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阻塞、非阻塞与同步、异步的区别

發布時間:2024/10/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阻塞、非阻塞与同步、异步的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、同步和異步

二者關注的是消息通信機制

  • 所謂同步,就是在發出一個“調用”時,在沒有得到結果之前,該*調用*就不返回,但是一旦調用返回,就得到返回值了。
  • 異步則是相反,“調用”在發出之后,這個調用就直接返回了,所以沒有返回結果。換句話說,當一個異步過程調用發出后,調用者不會立刻得到結果。而是在“調用”發出后,“被調用者”通過狀態、通知來通知調用者,或通過回調函數處理這個調用。

二、阻塞和非阻塞

關注的是程序在等待調用結果(消息,返回值)時的狀態

  • 阻塞調用是指調用結果返回之前,當前線程會被掛起。調用線程只有在得到結果之后才會返回。
  • 非阻塞調用指在不能立刻得到結果之前,該調用不會掛起當前線程,可以去做其他事情。

三、栗子

下面是一個很有意思的說明,相信更能讓大家直觀的感受到四者的區別:

老張愛喝茶,廢話不說,煮開水。出場人物:老張,水壺兩把:

  • 普通水壺,簡稱水壺;
  • 會響的水壺,簡稱響水壺。

?

  • 老張把水壺放到火上,立等水開。(同步阻塞,BIO)老張覺得自己有點傻。
  • 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞,NIO
  • 老張還是覺得自己有點傻,于是變高端了,買了把會響笛的那種水壺。水開之后,能大聲發出嘀~~~~的噪音。
  • 老張把響水壺放到火上,立等水開。(異步阻塞
  • 老張覺得這樣傻等意義不大,老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(異步非阻塞,AIO)老張覺得自己聰明了。
  • ——來源網絡,作者不明。

    作者:愚抄 鏈接:https://www.zhihu.com/question/19732473/answer/23434554 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

    四、總結

    • 所謂同步異步,只是對于水壺(被調用的函數)而言。普通水壺,同步;響水壺,異步。雖然都能干活,但響水壺可以在自己完工之后,提示老張水開了。這是普通水壺所不能及的。同步只能讓調用者去輪詢自己(情況2中),造成老張效率的低下。
    • 所謂阻塞非阻塞,僅僅對于老張(線程)而言。立等的老張,阻塞;看電視的老張,非阻塞。情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是異步的,可對于立等的老張沒有太大的意義。所以一般異步是配合非阻塞使用的,這樣才能發揮異步的效用。

    五、拓展

  • IO多路復用:使用一個線程來檢查多個文件描述符( socket )的狀態。得到就緒狀態之后,可以在本線程中執行,或者是啟動線程執行(線程池方案)。
  • ?

    (SAW:Game Over!)

    總結

    以上是生活随笔為你收集整理的阻塞、非阻塞与同步、异步的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。