允许多个线程通过的互斥锁

我的代码似乎允许多个线程进入受互斥锁“保护”的特定方法。


private static Mutex mut = new Mutex();

    public DadoMySql PegaPrimeiroFila(int identificacao)

    {

        DadoMySql dadoMySql = null;

        mut.WaitOne();



        dadoMySql = PegaPrimeiroFila_Processa();



        mut.ReleaseMutex();


        return dadoMySql;

    }

我有 10 个线程,并且每次都获得相同的“dadoMySql”,并且不断获得 2 个随机线程。


如果我在 de mutex 中添加日志,请等待一切正常。编写日志所需的额外时间使它工作:/,也许?


慕侠2389804
浏览 92回答 1
1回答

白板的微信

Mutex除非您要跨多个进程进行同步,否则在这里是多余的。一个简单的锁应该可以工作,因为你想要互斥:private static readonly object lockObject = new object();public DadoMySql PegaPrimeiroFila(int identificacao){    DadoMySql dadoMySql = null;    lock (lockObject)    {        dadoMySql = PegaPrimeiroFila_Processa();    }    return dadoMySql;}使用lock关键字还可以为您提供更强的保证,Monitor.Exit几乎总是被调用。一个很好的例子是在范围内抛出异常lock。
打开App,查看更多内容
随时随地看视频慕课网APP