원자 포스트 증가가 실제로 어떻게 작동하는지 혼란스러워합니다. std :: atomic <> 후 증가분은 언제 발생합니까?
std::atomic<int> a = 1; // global
void func(int i) {
std::cout << i;
}
// execute the following in two threads
func(a++);
예를
위해 나는a
마침내 3이되고 있지만, 출력 "11"을 참조 할 수 있습니다 생각? 두 스레드 중 하나가
a
이 2가된다는 것을 확실히 예상 할 수 있습니까?
"a가 원자가 아닌 경우 func가 반환 된 후 후행 증가가 발생합니다 "당신은 그것에 대해 확신하고 있습니까? – WhozCraig
@WhozCraig 내가 잘못 했어. 지적 해 주셔서 감사합니다. – GuLearn