四種常用IO模型

2022-04-09 14:27:05 字數 726 閱讀 8722

1) 同步阻塞io(blocking io)

2) 同步非阻塞io(non-blocking io)

3) io多路復用(io multiplexing)

4) 非同步io(asynchronous io)

注意以下概念:

1.同步/非同步

同步和非同步是相對的

同步 前後兩件任務, 有嚴格的順序一致性(依賴和遞進), 按順序執行, 執行完乙個再執行下乙個, 需要等待、協調執行

非同步 對順序的要求和依賴關係沒那麼強, 表現出來就是兩個任務可以分給兩個人做, 在等待任務a結束時(同步點前)可以進行任務b

多執行緒就是實現非同步的乙個方式, 它把"第二件任務"交給其他的執行緒去做了. 硬體的dma也是非同步.

在實際程式設計中, 同步和非同步區分了請求與響應的互動中, 獲取響應的方式

同步: 請求某種結果, 響應返回所需結果

非同步: 請求'給我結果', 第一次響應回答'我知道了', 第二次響應通知請求執行緒'已完成' (通過狀態通知或呼叫請求者註冊的**函式等方式)

2.阻塞/非阻塞

阻塞和非阻塞也是相對概念

阻塞   : 請求-響應比較耗時, 如io操作

非阻塞: 請求-響應比較迅速, 如沒有等待io完成就直接返回狀態值

socket的非阻塞io需要設定為nonblock

四種領域模型

我們在做領域設計階段時,這其中可能就包括了我們需要領域模型的原形 依據此原形,我們建立領域模型 並在以後的詳細設計中不段的調整和精化它 最終形成我們領域模型 entity 在初期,我們肯定給這些模型給予屬性 set 或get方法 在這之後 我們會根據 rdd的方式完善它 確定它的行為 但是這個行為的...

作業系統下常見的四種網路I O模型詳解

作業系統中,常見的i o模型包括以下幾種 一般情況下,作業系統中所有的socket預設的是阻塞的,當使用者呼叫了系統套接字recvfrom的時候,核心會就會進入i o的第乙個階段,就是準備資料,對於網路i o來說,這時候還有許多資料並未到達,那麼核心就需要等待所有的資料到來,這時候使用者程序將會被阻...

Python 檔案IO的四種讀寫操作

1.str 轉字串儲存 eval 轉資料型別讀取 d with open test.txt w as file file.write str d 轉字串儲存 with open test.txt r as file f file.read f eval f 轉資料型別讀取 print f,type ...