【发布时间】:2019-03-13 14:56:49
【问题描述】:
我的代码似乎允许多个线程进入受互斥锁“保护”的特定方法。
private static Mutex mut = new Mutex();
public DadoMySql PegaPrimeiroFila(int identificacao)
{
DadoMySql dadoMySql = null;
mut.WaitOne();
dadoMySql = PegaPrimeiroFila_Processa();
mut.ReleaseMutex();
return dadoMySql;
}
我有 10 个线程,并且不断获得 2 个随机线程,而不是每次都获得相同的“dadoMySql”。
如果我在 de mutex 中添加日志,则一切正常。编写日志所需的额外时间使它工作:/,也许?
【问题讨论】:
-
你有什么证据让你认为两个或多个线程同时“拥有”了互斥锁?听起来当您尝试通过日志记录来证明这一点时,日志记录证明与您的假设相反。我们不知道您看到了什么行为,但该行为是否有其他解释?
标签: c# multithreading mutex