c#中有所谓的“线程安全”吗?流

本文关键字:线程安全 安全 线程 有所谓 | 更新日期: 2023-09-27 18:03:20

我正在将进程的输出重定向到稍后读取的流阅读器中。我的问题是我正在使用多个线程,应该有这个流的单独实例。当我读取这个流时,线程出错了,开始奇怪地执行。

是否存在线程安全流?
EDIT:我在流阅读器的ReadToEnd上加了锁,在我这样做的那一行:

框架中内置了SynchronizedStream,它们只是不公开类让你查看/子类等,但你可以使用

将任何流转换为SynchronizedStream
var syncStream = Stream.Synchronized(inStream);

你应该把syncStream对象传递给每个需要它的线程,并确保你永远不会试图在代码的其他地方访问stream。

SynchronizedStream只是在所有读/写操作上实现一个监视器,以确保线程对流具有互斥访问。

编辑:

似乎他们也在框架中实现了SynchronizedReader/SynchronizedWriter。

var reader = TextReader.Synchronized(process.StandardOutput);

c#中有所谓的“线程安全”吗?流