并发读写NamePipeClientStream

时间:2010-03-11 23:25:00

标签: c# .net multithreading concurrency named-pipes

我的应用程序中有一个NamedPipeClientStream实例,用于双工通信(PipeDirection.InOut)。我还有两个线程,一个读线程和一个写线程。

我想让read线程只调用NamedPipeClientStream.Read方法,而write线程只调用NamedPipeClientStream.Write方法。他们永远不会调用彼此的方法,但他们可能同时调用管道实例。

我查找了NamedPipeClientStream的文档,它说公共静态方法是线程安全的,但实例方法不保证是线程安全的。

我的问题是,我有两个线程同时在管道实例上调用两个不同的方法(读取和写入)是安全的,或者这是我不应该做的事情?并且,实例方法线程安全是否仅适用于调用相同方法的单独线程,而不是单独调用读取和写入等单独方法的线程?

谢谢!

1 个答案:

答案 0 :(得分:4)

是的,没问题。 PipeStream.Read和Write都直接调用本机Windows API,ReadFile和WriteFile是线程安全的。