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