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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

同步/异步阻塞/非阻塞

發(fā)布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 同步/异步阻塞/非阻塞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

平時開發(fā)中經(jīng)常會聽大家說到什么同步阻塞、異步非阻塞等等名詞,這里我談下自己對這兩個名詞的理解,僅僅是個人觀點,并不一定正確。

1.阻塞/非阻塞

我認為判定阻塞還是非阻塞,取決于線程所做的操作是否需要將線程掛起等待。
舉個例子,我們都知道CAS是非阻塞的,而synchronized是阻塞的。為什么呢,因為CAS能快速返回一個獲取鎖成功或失敗結(jié)果,線程可以在獲取鎖失敗時再去做其他事情,而synchronized在線程獲取鎖失敗后會將線程掛起,直到鎖釋放后才可能被重新喚醒,這期間線程一直處于blocked的等待狀態(tài)。

1.同步/非同步

我認為同步還是非同步,取決于是否是當前線程親自執(zhí)行操作。若當前線程親自執(zhí)行操作則為同步,當前線程通過創(chuàng)建或利用其他線程執(zhí)行操作則為異步。
同樣舉個例子,我們都知道Nio和Aio,一個為同步非阻塞,一個為異步非阻塞。在Nio中所有的業(yè)務(wù)線程會將關(guān)注的讀寫事件和回調(diào)接口注冊到事件中心,通過事件管理線程不停的循環(huán)檢測是否有就緒的事件,如果有事件管理器就會調(diào)用回調(diào)接口,業(yè)務(wù)線程就會去進行相應(yīng)的讀寫操作和業(yè)務(wù)邏輯。而區(qū)別于Nio,在Aio中業(yè)務(wù)線程會直接向操作系統(tǒng)提出一個異步IO的請求,然后將回調(diào)函數(shù)和相關(guān)信息注冊到事件中心,操作系統(tǒng)會異步的進行相應(yīng)IO讀寫操作并將結(jié)果寫到指定內(nèi)存地址,操作完成后由事件管理器調(diào)用業(yè)務(wù)線程的回調(diào)接口,業(yè)務(wù)線程直接使用內(nèi)存數(shù)據(jù)。兩者之前的區(qū)別在于是否為業(yè)務(wù)線程親自進行讀寫操作。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

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

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