static int GCC_GetCpuFlag()
{
  int flag = CPU_SCALAR;
  __builtin_cpu_init();

  if(__builtin_cpu_supports("avx2"))
    flag = CPU_AVX2;
  else if(__builtin_cpu_supports("sse4.2"))
    flag = CPU_SSE42;
  
  return flag;
}

FORCE_INLINE static int GetCpuFlag()
{
  static int flag = GCC_GetCpuFlag();
  return flag;
}


GetCpuFlag() 함수에서 

flag가 static 변수고 바로 초기화하고 값을 돌려주잖아.

그럼 여러 쓰레드에서 호출해도 안전한건가? 프로그램 시작할때 초기화 하는거 맞지?