Swoole 中涉及的一些基本概念

2022-07-05 15:54:11 字數 1213 閱讀 8429

在計算機中,輸入 / 輸出(即 io)是指資訊處理系統(比如計算機)和外部世界(可以是人或其他資訊處理系統)的通訊。輸入是指系統接收的訊號或資料,輸出是指從系統發出的資料或訊號。由於程式和執行時資料是在記憶體中駐留,由 cpu 這個超快的計算核心來執行,涉及到資料交換的地方,通常是磁碟、網路等,就會有 io 產生。

同步和非同步是一種訊息通訊機制 (synchronous communication/asynchronous communication),關注點在於被呼叫者返回結果返回之間的關係, 描述物件是被呼叫物件的行為。

# 同步(synchronous):在發出乙個同步呼叫時,在沒有得到結果之前,該呼叫就不返回,等待返回結果才繼續執行後續的操作。

# 非同步( asynchronous):發出呼叫,直接返回,不關心是否返回結果。非同步可以通過狀態、**、 通知呼叫者結果,可以先去執行其他操作,然後等待通知再回來執行剛才沒執行完的操作。

阻塞和非阻塞是一種業務流程處理方式。關注點在於呼叫發生時呼叫者狀態被呼叫者返回結果之間的關係。 描述的是等待結果時候呼叫者的狀態此時結果可能是同步返回的,也能是非同步返回。

# 阻塞( blocking ):在結果返回之前,當前執行緒被掛起,後續**只有在結果返回後才能執行。

# 非阻塞( nonblocking):在不能立刻獲取結果前,該呼叫不會阻塞當前執行緒。

實際程式設計中,通過執行緒實現程序的同步非阻塞,通過協程實現執行緒的同步非阻塞。

# 同步阻塞:打**問老闆有沒有某書(呼叫),老闆說查一下,讓你別掛**(同步),你一直等待老闆給你結果,什麼事也不做(阻塞)。

# 同步非阻塞:打**問老闆有沒有某書(呼叫),老闆說查一下,讓你別掛**(同步),等**的過程中你還一邊嗑瓜子(非阻塞)。

非同步阻塞 - 非同步非阻塞

# 非同步阻塞:打**問老闆有沒有某書(呼叫),老闆說你先掛**,有了結果通知你(非同步),你掛了**後(結束呼叫), 除了等老闆**通知結果,什麼事情也不做(阻塞)。

# 非同步非阻塞:打**問老闆有沒有某書(呼叫),老闆說你先掛**,有了結果通知你(非同步),你掛**後(結束呼叫),一遍等**,一遍嗑瓜子。(非阻塞)

5 種 i/o 模型:

io 模型的具體解釋可以參考 linux 五種 io 模型

data structure 樹的一些基本概念

定義 乙個樹,每個內部節點,最多只有兩個子節點,每個節點的子節點是有序的,一般稱為left child和right child。遞迴的定義 乙個樹有乙個單個根節點,或者乙個樹其根節點有兩個有序的子節點,每個節點又是乙個二叉樹的根節點。對於非空二叉樹t,n 0 為葉子節點數,而 n 2 是度2節點數,...

多執行緒(一) 了解多執行緒,以及涉及到的一些基本概念

同步和非同步主要用於指對於一次方法的呼叫過程。同步方法呼叫開始後,方法者必須等到這一次呼叫返回後,才能繼續後續的操作。非同步方法呼叫開始後,立即返回,方法者可繼續開始後續的行為。併發和並行主要用於指多個任務的執行。併發是指多個任務交替執行,實際上可能仍然是序列。而並行則是真正意義上的指多個任務同時執...

Oracle Inventory裡的一些概念

事務處理 transaction 是指物料移入庫存 在庫存內移動以及移出庫存.物料搬運單 move order 是在乙個組織內對物料進行移動的請求.保留 reservation 是 與需求 之間的關聯。保留將在 與需求 之間建立乙個永久的資料關聯,代表指定需求 的乙個可靠的物料分配。現有量 on h...