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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/10/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阻塞、非阻塞与同步、异步的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、同步和異步

二者關(guān)注的是消息通信機(jī)制

  • 所謂同步,就是在發(fā)出一個(gè)“調(diào)用”時(shí),在沒(méi)有得到結(jié)果之前,該*調(diào)用*就不返回,但是一旦調(diào)用返回,就得到返回值了。
  • 異步則是相反,“調(diào)用”在發(fā)出之后,這個(gè)調(diào)用就直接返回了,所以沒(méi)有返回結(jié)果。換句話說(shuō),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者不會(huì)立刻得到結(jié)果。而是在“調(diào)用”發(fā)出后,“被調(diào)用者”通過(guò)狀態(tài)、通知來(lái)通知調(diào)用者,或通過(guò)回調(diào)函數(shù)處理這個(gè)調(diào)用。

二、阻塞和非阻塞

關(guān)注的是程序在等待調(diào)用結(jié)果(消息,返回值)時(shí)的狀態(tài)

  • 阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前線程會(huì)被掛起。調(diào)用線程只有在得到結(jié)果之后才會(huì)返回。
  • 非阻塞調(diào)用指在不能立刻得到結(jié)果之前,該調(diào)用不會(huì)掛起當(dāng)前線程,可以去做其他事情。

三、栗子

下面是一個(gè)很有意思的說(shuō)明,相信更能讓大家直觀的感受到四者的區(qū)別:

老張愛(ài)喝茶,廢話不說(shuō),煮開(kāi)水。出場(chǎng)人物:老張,水壺兩把:

  • 普通水壺,簡(jiǎn)稱水壺;
  • 會(huì)響的水壺,簡(jiǎn)稱響水壺。

?

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

    作者:愚抄 鏈接:https://www.zhihu.com/question/19732473/answer/23434554 來(lái)源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

    四、總結(jié)

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

    五、拓展

  • IO多路復(fù)用:使用一個(gè)線程來(lái)檢查多個(gè)文件描述符( socket )的狀態(tài)。得到就緒狀態(tài)之后,可以在本線程中執(zhí)行,或者是啟動(dòng)線程執(zhí)行(線程池方案)。
  • ?

    (SAW:Game Over!)

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。