2015-05-17 182 views
2

有多個線程調用CallNamedPipe同時將消息發送到一個相同的命名管道。方法CallNamedPipe在Windows線程安全,我應該使用互斥鎖來保護對同一個命名管道的併發訪問嗎?是Windows CallNamedPipe線程安全

+0

您有7回答問題,但答案只有一個接受的。請接受對您的案例有用的答案。 – Dialecticus

+0

它需要一個消息類型的管道並寫入一條消息,專門用於確保操作是線程安全的。 –

回答

2

是的,它本質上是線程安全的,因爲它不使用手柄,緩衝,或其他任何客戶端上的兩個(或更多)線程可能試圖同時訪問。每次調用CallNamedPipe時,它會打開命名管道的新實例,發送消息並關閉句柄。 (線程同時訪問同一個命名管道的不同實例並不是一個問題,這與多個進程同時訪問同一個命名管道的不同實例沒有區別,如果這個命名管道不允許命名管道會少很多有用的比他們。)