【发布时间】:2016-08-29 11:52:52
【问题描述】:
我有以下代码:
public void Execute(IJobExecutionContext context)
{
lock (_lockObj)
{
// ... some HTTP job that can take 5 to 30 seconds ...
}
}
当一个活动作业正在工作并且第二个线程进入相同的方法时,我希望它为第二个线程锁定并等待。但是,当它已经为第二个线程锁定时,然后第三个线程进入代码,我希望它退出方法而不是等待并进入作业执行。
我可以使用静态计数器变量并通过作业执行中的线程数增加/减少其值。但我想知道是否已经有更好的做法来解决这个问题。
【问题讨论】:
-
小心。这不是互斥锁的工作方式,普通锁的工作方式。请好好看看stackoverflow.com/questions/5754879/usage-of-mutex-in-c-sharp
-
从您所描述的情况来看,您似乎实际上正在寻找一个实际的 Mutex :)
标签: c# multithreading locking mutex