2015-05-17 185 views
2

有多个线程调用CallNamedPipe同时将消息发送到一个相同的命名管道。方法CallNamedPipe在Windows线程安全,我应该使用互斥锁来保护对同一个命名管道的并发访问吗?是Windows CallNamedPipe线程安全

+0

您有7回答问题,但答案只有一个接受的。请接受对您的案例有用的答案。 – Dialecticus

+0

它需要一个消息类型的管道并写入一条消息,专门用于确保操作是线程安全的。 –

回答

2

是的,它本质上是线程安全的,因为它不使用手柄,缓冲,或其他任何客户端上的两个(或更多)线程可能试图同时访问。每次调用CallNamedPipe时,它会打开命名管道的新实例,发送消息并关闭句柄。 (线程同时访问同一个命名管道的不同实例并不是一个问题,这与多个进程同时访问同一个命名管道的不同实例没有区别,如果这个命名管道不允许命名管道会少很多有用的比他们。)