具名管道實例
最簡單的管道伺服器會建立管道的單一實例、連接到單一用戶端、與用戶端通訊、中斷與用戶端的連線、關閉管道控制碼,以及終止。 不過,管道伺服器通常會與多個管道用戶端通訊。 管道伺服器可以使用單一管道實例來連接多個管道用戶端,方法是依序連線和中斷與每個用戶端的連線,但效能不佳。 管道伺服器必須建立多個管道實例,以有效率地同時處理多個用戶端。
維護多個管道實例有三種基本策略。
- 為每個管道實例建立個別的執行緒。 如需多執行緒管道伺服器的範例,請參閱 多執行緒管道伺服器。
- 在ReadFile、WriteFile和ConnectNamedPipe函式中指定OVERLAPPED結構,以使用重迭的作業。 如需範例,請參閱 使用重迭 I/O 的具名管道伺服器。
- 使用 ReadFileEx 和 WriteFileEx 函式來使用重迭的作業,這會指定要在作業完成時執行的完成常式。 如需範例,請參閱 使用完成常式的具名管道伺服器。
多執行緒管道伺服器最容易寫入,因為每個實例的執行緒會處理單一管道用戶端的通訊。 系統會視需要將處理器時間配置給每個執行緒。 但每個執行緒都會使用系統資源,這是處理大量用戶端之管道伺服器的缺點。
使用單一執行緒伺服器時,比較容易協調影響多個用戶端的作業,而且更容易保護共用資源,避免多個用戶端同時存取。 單一線程伺服器的挑戰是它需要協調重迭的作業,才能配置處理器時間來處理用戶端同時的需求。