Параллельное чтение и запись в NamePipeClientStream - PullRequest
3 голосов
/ 12 марта 2010

В моем приложении есть экземпляр NamedPipeClientStream, настроенный для двусторонней связи (PipeDirection.InOut). У меня также есть две темы: нить чтения и запись.

Я хочу, чтобы поток чтения вызывал только метод NamedPipeClientStream.Read, а поток записи - только метод NamedPipeClientStream.Write. Они никогда не будут вызывать методы друг друга, но могут одновременно вызывать экземпляр канала.

Я посмотрел документацию для NamedPipeClientStream и там говорилось, что публичные статические методы являются поточно-ориентированными, но методы экземпляров не гарантируют поточно-ориентированные.

Мой вопрос: безопасно ли, чтобы у меня было два потока, одновременно вызывающих два разных метода (чтение и запись) для экземпляра канала, или это то, что я не должен делать? И распространяется ли безопасность потоков метода экземпляра только на отдельные потоки, вызывающие один и тот же метод, а не на отдельные потоки, вызывающие отдельные методы, такие как Read и Write?

Спасибо!

1 Ответ

4 голосов
/ 12 марта 2010

Да, нет проблем. Как PipeStream.Read, так и Write напрямую вызывают собственный API-интерфейс Windows, ReadFile и WriteFile являются поточно-ориентированными.

...