功能本地静态变量用于唯一ID生成

0 c c++ thread-safety

可能重复:
具有本地静态变量的ID生成器 - 线程安全?

每次调用时,以下函数是否会返回唯一的数字?在多线程场景中怎么样?

int returnUniqueNumber()
{
  static int i = 0;
  ++i;
  return i;
}
Run Code Online (Sandbox Code Playgroud)

Goz*_*Goz 5

这取决于您的平台,以及您是否会遇到多线程问题.在Windows上你最好做以下事情:

int returnUniqueNumber()
{
  volatile static long l = 0;
  return (int)InterlockedIncrement( &l );
}
Run Code Online (Sandbox Code Playgroud)

互锁*函数可以保证原子.