这将是一个非常简单的问题(可能重复),但我无法找到它.
Win32 API提供了一组非常方便的原子操作(作为内在函数),例如InterlockedIncrement发出lock addx86代码.另外,InterlockedCompareExchange映射到lock cmpxchg.
但是,我想在Linux中用gcc做到这一点.由于我正在使用64位,因此无法使用内联汇编.是否存在gcc的内在函数?
下面的代码段是否会在多线程场景中按预期工作?
int getUniqueID()
{
static int ID=0;
return ++ID;
}
Run Code Online (Sandbox Code Playgroud)
这些ID不必连续 - 即使它跳过一个值,也没关系.可以说当这个函数返回时,返回的值在所有线程中都是唯一的吗?