草庐IT

LeaveCriticalSection

全部标签

c++ - InterlockedIncrement 与 EnterCriticalSection/counter++/LeaveCriticalSection

我有一些多线程代码(请参阅问题WindowsAPIThreadPoolsimpleexample),我使用计数器来识别线程。有人建议我在线程的回调函数中使用InterlockedIncrement来递增此计数器。然而,这似乎并没有正确锁定变量,因为我遇到了一些并发问题。我通过手动使用关键部分替换了InterlockedIncrement:EnterCriticalSection/counter++/LeaveCriticalSection,现在可以完美运行。为什么会这样?这两个选项不应该是严格等价的吗?请注意,我说的是只启动几个(大约10个)线程。 最佳答案