我继承了一些这样的代码:

m_mutex.Lock();
ResetEvent( m_hSyncObject );
m_mutex.Unlock();

SetEvent()相同

在这种情况下,是否需要这些互斥对象-那些调用会自己表现吗,还是我可以摆脱锁定?这个函数已经有一些我早些时候使之原子化的inc/decs值,现在这些事件都在锁之内,所以如果可能的话,摆脱它们将是一个大胜利。

最佳答案

几乎可以肯定不需要此额外的互斥锁。 ResetEventSetEvent函数本身可以安全地从多个线程中调用

鉴于此代码确实存在,编写该代码的开发人员很可能不理解他们创建的线程语义。我将根据该逻辑将任何代码视为高度可疑。从长远来看,它可能会节省您一些时间来继续进行代码预审核以解决线程问题

08-28 16:53