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 변수고 바로 초기화하고 값을 돌려주잖아.
그럼 여러 쓰레드에서 호출해도 안전한건가? 프로그램 시작할때 초기화 하는거 맞지?
해당 댓글은 삭제되었습니다.
뮤텍스 안쓰고 못하나?
뮤텍스 쓰면 그냥 쉽게하는데 자주 호출하면 좀 그럼..
atomic써도 완전히 critical section이 안되
일단 flag 변수에 스레드 2개이상이 동시에 접근하면 둘다 false일 수가 있어
아근데 그냥 컴파일 하면 되는데? ㅋㅋ
오오 좋은내용 고마워!!
오 씨발 내가 딱원하던거야!! 질질쌋다 ㅋㅋㅋ