日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

同步/异步阻塞/非阻塞

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

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

1.阻塞/非阻塞

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

1.同步/非同步

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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