可能重复:
具有本地静态变量的ID生成器 - 线程安全?
每次调用时,以下函数是否会返回唯一的数字?在多线程场景中怎么样?
int returnUniqueNumber()
{
static int i = 0;
++i;
return i;
}
Run Code Online (Sandbox Code Playgroud)
这取决于您的平台,以及您是否会遇到多线程问题.在Windows上你最好做以下事情:
int returnUniqueNumber()
{
volatile static long l = 0;
return (int)InterlockedIncrement( &l );
}
Run Code Online (Sandbox Code Playgroud)
该互锁*函数可以保证原子.