std::atomic_변수가 뭐죠?

익명 사용자의 이미지

단지 변수에 lock이 걸리는거라고만 알고있습니다.

std::atomic_변수에 대해서 설명해주는 곳을 찾기가 힘드네요 ㅠㅠ

변수에 대해서 락을 거는것이 다라면

만약 멀티스레드 환경에서

result = a + b + c + (atomic_variable ++)

라는 식이 있다면 저식은

result = a + b + c + atomic_variable (물론 덧셈도 하나하나씩으로 나뉘겠지만 일단은...)
atomic_variable = atomic_variable + 1

정도가 될텐데

std::atomic을 사용하면 다음스레드에서 + 1 된 값으로 계산한다는 보장을 할 수 있을까요??

아니면 read 와 write 가 겹치는것(race condition)만 막는다는 의미일까요?