我继承了一些这样的代码:
m_mutex.Lock();
ResetEvent( m_hSyncObject );
m_mutex.Unlock();
与
SetEvent()
相同在这种情况下,是否需要这些互斥对象-那些调用会自己表现吗,还是我可以摆脱锁定?这个函数已经有一些我早些时候使之原子化的inc/decs值,现在这些事件都在锁之内,所以如果可能的话,摆脱它们将是一个大胜利。
最佳答案
几乎可以肯定不需要此额外的互斥锁。 ResetEvent
和SetEvent
函数本身可以安全地从多个线程中调用
鉴于此代码确实存在,编写该代码的开发人员很可能不理解他们创建的线程语义。我将根据该逻辑将任何代码视为高度可疑。从长远来看,它可能会节省您一些时间来继续进行代码预审核以解决线程问题