2014-04-26 53 views
1

此快照從Windows System Programming (4th Edition)開始。理解郵件槽的困惑

我有一個關於郵筒幾個疑問,

  1. 爲什麼郵筒被稱爲一個方向?雖然可以有多個客戶端/服務器
  2. 爲什麼打開將失敗,如果沒有讀者,爲什麼打開會失敗?難道我不會寫,並且沒有服務器會讀取,或者一段時間後可能會讀取?

我努力在Google上搜索,但沒有得到確切的答案。

enter image description here

回答

4

1.爲什麼郵筒被稱爲一個方向?雖然可以有多個客戶端/服務器

它確實是單向的。創建郵筒的過程只能從中讀取,而不能寫入。打開郵槽的過程只能寫入,而不能讀取。郵槽不像命名管道或套接字,數據可以通過單個連接在兩個方向上流動。如果創建郵筒的進程想要發送回覆,則它必須寫入不同的郵筒或其他IPC機制。郵筒

2.爲什麼作家被稱爲客戶端,而讀者是服務器

大多數IPC機制有一個客戶機/服務器模型。 「服務器」創建「客戶端」然後訪問的資源。一個郵筒適合這種描述,因爲讀者必須在寫者寫信之前創建郵筒。

3.爲什麼打開會失敗,如果沒有讀者?難道我不會寫,並且沒有服務器會讀取,或者一段時間後可能會讀取?

如果沒有讀者,郵筒不存在。讀者必須先創建郵筒,然後作者才能寫信給它。當所有的讀者已經關閉了對郵筒的處理(或以其他方式終止)時,郵筒不再存在並且不能再被寫入。