Io
mkfifo - 磁碟 I/O 是否實際發生?
我有 2 個應用程序:
- 生產者(N 個實例)
- 消費者(1 個實例)
我目前從生產者那裡寫出中間結果,然後消費者從磁碟讀取這些文件並產生最終結果。
我想通過將生產者的輸出直接“流式傳輸”到消費者來最小化這個 I/O。
我在這裡遇到了命名管道 (mkfifo) 和一個後續範例。這看起來不錯,但我無法確定這是如何實際實現的?FIFO隊列是否只是通過文件緩衝?如果是這樣,那可能對我沒有幫助。我希望內容在不使用磁碟的情況下完全“通過記憶體”流式傳輸。也許這在跨程序中是不可能的?
沒有磁碟 i/o(可能在瀏覽文件系統以打開 fifo 文件時除外。)
FIFO 特殊文件(命名管道)類似於管道,不同之處在於它作為文件系統的一部分進行訪問。
$$ … $$當程序通過 FIFO 交換數據時,核心在內部傳遞所有數據而不將其寫入文件系統。因此,FIFO 特殊文件在文件系統上沒有內容;文件系統條目僅用作參考點,以便程序可以使用文件系統中的名稱訪問管道。