1. 程式人生 > 遊戲 >明豔動人 《光環:戰鬥進化》復刻版8K光追效果演示

明豔動人 《光環:戰鬥進化》復刻版8K光追效果演示

一.介紹

阻塞和非阻塞指的是執行一個操作是等操作結束再返回,還是馬上返回。同步和非同步又是另外一個概念,它是事件本身的一個屬性。

二.例子

去書店借一本書,同步就是我要親自到書店,問老闆有沒有這本書,阻塞就是老闆查詢的時候(讀寫)我只能在那等著,老闆找到書後把書交給我,這就是同步阻塞。

我親自到書店借書,老闆在找這本書的時候,我可以去幹別的(比如去下一個書店借書),然後每隔一段時間去問老闆書找到了沒有,也可以等老闆找到書以後通知我,這就是同步非阻塞。

我想借本書,找個人幫我去借,借到書以後再通知我(那個人會等老闆找完書),這就是非同步,我只發起呼叫,但是本身並不參與這個事件,而是讓別的執行緒去做這個事。這就是非同步阻塞

我想借本書,找個人幫我去借,借到書以後再通知我(那個人會找多個老闆借書),這就是非同步,我只發起呼叫,但是本身並不參與這個事件,而是讓別的執行緒去做這個事,別的執行緒也處理多個事物。這就是非同步非阻塞

三.好處

同步非阻塞,當那個人有事有問題掛掉了,會導致什麼情況呢?即使那個人可以去借多個書,但是他掛掉了就全沒了。

非同步非阻塞,這樣多個人去借多本書,一個人掛掉不會影響其他人。但是借書的人不能太多,否則cpu切換執行緒將會很消耗cpu。(Nginx的工作程序一般設定為核心數,也是這個原因)

四.總結

同步與非同步是對應的,它們是執行緒之間的關係,兩個執行緒之間要麼是同步的(同步的話,那就只有一個執行緒),要麼是非同步的(多個執行緒)。

阻塞與非阻塞是對同一個執行緒來說的,在某個時刻,執行緒要麼處於阻塞,要麼處於非阻塞。

幫我借書的那個人有沒有借到書,我可以打電話問他(輪詢),也可以等他通知我,這是非同步的通知;在借書的過程中借書的那個人可以輪詢的方式檢視書是否已經找到(緩衝區有沒有資料),找到了你可以把它拿走,也可以等老闆找到書後通知我,這是非阻塞的通知與輪詢。

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。