我正在编写一个我知道需要锁的类,因为该类必须是线程安全的。但由于我是测试驱动开发,我知道我不能在为它创建测试之前编写一行代码。而且我发现很难做到,因为测试最终会变得非常复杂。在这些情况下你通常会怎么做?有什么工具可以帮助解决这个问题吗?
这个问题是 .NET 特定的
有人要代码:
public class StackQueue
{
private Stack<WebRequestInfo> stack = new Stack<WebRequestInfo>();
private Queue<WebRequestInfo> queue = new Queue<WebRequestInfo>();
public int Count
{
get
{
return this.queue.Count + this.stack.Count;
}
}
public void Enqueue(WebRequestInfo requestInfo)
{
this.queue.Enqueue(requestInfo);
}
public void Push(WebRequestInfo requestInfo)
{
this.stack.Push(requestInfo);
}
private WebRequestInfo Next()
{
if (stack.Count > 0)
{
return stack.Pop();
}
else if (queue.Count > 0)
{
return queue.Dequeue();
}
return null;
}
}
最佳答案
好吧,您通常可以使用 ManualResetEvent
之类的东西在释放门之前让一些线程进入预期的问题状态……但这只涵盖了线程问题的一小部分。
对于更大的线程错误问题,有 CHESS (进行中)- 将来可能是一个选项。
关于c# - 我应该在编写任何锁之前对多线程问题进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791682/