먼저 원자 연산이 무엇인지 알아야 합니다. 제가 알기로는 멀티스레드 원자 연산에 부합하는 연산을 원자 연산이라고 합니다.
원자는 세상에서 가장 작은 단위이며 분할할 수 없습니다. 예를 들어 a = 0; (A는 길이와 이중 유형이 아님) 이 연산이 분할 불가능하다면 이 연산을 원자 연산이라고 합니다. 또 다른 예:a++; +; 이 연산은 실제로는 a = a+1;
분리가 가능하므로 원자 연산이 아닙니다.
예를 들어, a = 1 연산을 수행하는 데는 문제가 없지만 a = b를 수행하는 데는 큰 문제가 있습니다.
그 순간 다른 스레드가 b의 값을 변경하면 a = b의 값을 확신할 수 없기 때문에 다른 결과가 나오게 됩니다.
예를 들어, 처음 예상한 값이 a = b이고 B의 값이 3이라고 생각하면 A도 3이지만 멀티스레딩의 경우 프로그램은 B를 만듭니다.
4가 되면 A는 4가 되고, 이것은 원자 연산이 아닙니다.