【发布时间】:2011-11-12 03:58:17
【问题描述】:
我在一次编程竞赛中遇到了这个难题,我不应该使用任何内置的并发 .NET 4.0 数据结构。
我必须重写ToString() 方法,并且该方法应该支持并发阅读器。
这是我想出的解决方案,但我坚信它不支持并发阅读器。如何在不锁定列表的情况下支持并发阅读器?
class Puzzle
{
private List<string> listOfStrings = new List<string>();
public void Add(string item)
{
lock (listOfStrings)
{
if (item != null)
{
listOfStrings.Add(item);
}
}
}
public override string ToString()
{
lock (listOfStrings)
{
return string.Join(",", listOfStrings);
}
}
}
【问题讨论】:
-
“并发读者”是指多个线程同时调用
.ToString? -
@KirkWoll 是的。我想支持多个线程调用 Tostring()
标签: c# .net concurrency