我有一些多线程代码(请参阅问题Windows API线程池简单示例),我正在使用计数器来识别线程.
我被建议使用InterlockedIncrement在线程的回调函数中递增此计数器.然而,这似乎没有正确锁定变量,因为我遇到了一些并发问题.我通过手动使用临界区替换了InterlockedIncrement:EnterCriticalSection/counter ++/LeaveCriticalSection,现在可以完美地运行.
为什么会这样?这两个选项不应该严格等同吗?请注意,我正在谈论启动一对(大约10个)线程.