.Net (4.0) 是否有一个允许一个线程写入文本而另一个线程读取的现有类?
理想情况下,我会使用 MemoryStream ,例如:
MemoryStream memStream = new MemoryStream();
TextWriter tw = new StreamWriter(memStream);
TextReader tr = new StreamReader(memStream);
//Consumer Thread
(new Thread(delegate()
{
while (true)
{
Console.WriteLine(tr.ReadLine());
}
})).Start();
// Producer thread
(new Thread(delegate()
{
while (true)
{
Thread.Sleep(1000);
tw.WriteLine(System.DateTime.Now));
}
})).Start();
这不起作用,因为流编写器在流中推进 Position 并且阅读器将看不到任何东西,除非它使用 Seek 倒带,这会在阅读器和编写器影响位置指针时产生并发问题。
这可以通过管道或套接字来完成,这两者都是多余的。带锁的 RYO 代码似乎同样奇怪。