我有一个看起来像这样的功能
public void DoSomething(){
var lockThis = new Object();
lock(lockThis){
//trying to step through code
}
}
所以我在lock(lockThis){...}中放置了一个断点。理论上,一次只有一个线程处于临界区,但我不能单步执行?它在其中的第一行代码中断,并且它一直在同一条线上。断点的行为就像锁外一样。
编辑:我应该描述环境。该类和方法属于中间层DLL。该方法由ASP.NET应用程序中的Web服务调用。我正在对webservice进行压力测试,它会生成调用上述方法的多个线程。答案 0 :(得分:2)
您的Lock对象应该在不同的线程之间共享,在这种情况下,您为每个线程创建单个实例并调用。
Object lockThis = new Object();
或(取决于您的代码)
static Obejct lockThis = new Object();
public void DoSomething()
{
lock(lockThis)
{
//trying to step through code
}
}