windows 上的 CallNamedPipe 是否线程安全

Is CallNamedPipe on windows thread safe

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

是的,它本质上是线程安全的,因为它不使用句柄、缓冲区或客户端上两个(或更多)线程可能尝试同时访问的任何其他内容。每次调用 CallNamedPipe 时,它都会打开命名管道的一个新实例,发送消息,然后关闭句柄。

(线程同时访问同一个命名管道的不同实例的事实不是问题。这与多个进程同时访问同一个命名管道的不同实例没有什么不同,如果不允许的话命名管道的用处会比现在少得多。)