기록은 기억을 이기고 시간보다 오래 남는다.

프로그래밍 언어/c++

[c++] fetch_add() 함수

준_준 2024. 5. 29. 14:43

fetch_add()는 원자적(atomic) 연산 중 하나입니다.

C++11에서 추가된 C++ 표준 라이브러리의 std::atomic 클래스의 멤버 함수 중 하나로,

 특정 변수에 대한 원자적인 덧셈 연산을 수행합니다.

fetch_add()는 특정 변수의 값을 가져온 후에 해당 변수에 인자로 전달된 값을 더하고, 그 결과를 반환합니다. 

 

이 과정에서 해당 변수는 다른 스레드에 의해 변경되지 않는 원자적인 연산이 보장됩니다.

예를 들어, 다음 코드는 x 변수에 대해 fetch_add() 함수를 사용하여 1을 더하는 코드입니다.



위 코드는 x 변수의 값을 1 증가시키고, 그 결과를 result 변수에 저장합니다.

fetch_add() 함수는 원자적 연산이므로 다른 스레드가 x 변수를 변경하더라도

결과에는 영향을 주지 않습니다.

 

atomic도 매우 좋은 방법이지만 

일반적으로는 lock을 걸어서 한다.

반응형