c#中有所谓的“线程安全”吗?流
本文关键字:线程安全 安全 线程 有所谓 | 更新日期: 2023-09-27 18:03:20
我正在将进程的输出重定向到稍后读取的流阅读器中。我的问题是我正在使用多个线程,应该有这个流的单独实例。当我读取这个流时,线程出错了,开始奇怪地执行。
是否存在线程安全流?
EDIT:我在流阅读器的ReadToEnd上加了锁,在我这样做的那一行:
框架中内置了SynchronizedStream,它们只是不公开类让你查看/子类等,但你可以使用
将任何流转换为SynchronizedStreamvar syncStream = Stream.Synchronized(inStream);
你应该把syncStream对象传递给每个需要它的线程,并确保你永远不会试图在代码的其他地方访问stream。
SynchronizedStream只是在所有读/写操作上实现一个监视器,以确保线程对流具有互斥访问。
编辑:似乎他们也在框架中实现了SynchronizedReader/SynchronizedWriter。
var reader = TextReader.Synchronized(process.StandardOutput);