为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕侠2389804 2022-10-23 15:09:45
我的代码似乎允许多个线程进入受互斥锁“保护”的特定方法。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 中添加日志,请等待一切正常。编写日志所需的额外时间使它工作:/,也许?
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

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。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信