使用VC ++来获取一个向上计数的唯一ID,我想知道这在多线程应用程序中是否合法?
uint32_t GetNewId() { return ::InterlockedIncrement(&lastId); }
基本上,我想知道InterlockedIncrement是否只保护增量,或者返回值是否也能防止竞争条件?
答案 0 :(得分:4)
是的,这是合法的 - 由
组成的访问权限将是原子的。只是不要忘记它是32位并且可以溢出。
答案 1 :(得分:1)
答案 2 :(得分:0)
检查的最佳方法是转到source。
对于其他互锁的调用,此函数原子 功能