【发布时间】:2016-11-09 21:02:16
【问题描述】:
根据Hangfire 0.8.2 announcement post,Hangfire 有一个DisableConcurrentExecution 过滤器,当应用于一个方法时,可以防止该方法的多个实例同时执行。
DisableConcurrentExecution 过滤器采用 timeoutInSeconds int 参数。从链接文章中的示例:
[DisableConcurrentExecution(timeoutInSeconds: 10 * 60)]
public void SomeMethod()
{
// Operations performed inside a distributed lock
}
我的问题是:如果一个作业正在等待获取DisableConcurrentExecution-filtered 方法的锁,而该作业等待的时间超过了timeoutInSeconds 值,会发生什么情况?
【问题讨论】:
-
注意:如果你有任务在等待,它们会阻塞等待释放锁的工作线程。因此,如果您有意或无意地依赖此属性来按顺序运行项目,请务必小心,因为您可能会阻止其他任务也运行。