동시성 프로그래밍에서는 CPU와 RAM 사이에 위치하는 CPU 캐시 메모리와 멀티 스레드라는 특징 때문에 다수의 스레드가 공유자원에 접근할 때 가시성 문제와 원자성 문제가 발생할 수 있습니다.

가시성 문제는 여러 스레드가 각자 다른 CPU 캐시 메모리를 참조하게 되면서 CPU 캐시와 RAM의 데이터가 일치하지 않아 생기는 문제입니다. 한 스레드가 공유 변수를 수정했지만, 다른 스레드는 여전히 이전 값을 읽는 상황이 발생합니다.

원자성 문제는 여러 스레드가 공유 자원에 동시에 쓰기 연산을 수행할 때 중간에 다른 스레드가 개입하여 최종 결과가 잘못되는 문제입니다. 예를 들어 5개의 스레드가 동시에 카운터를 1씩 증가시켰는데 최종 값이 5가 아닌 3이 되는 경우입니다.

출처 및 참고자료

https://www.youtube.com/watch?v=neUDGB3nQ8A&list=PLtUgHNmvcs6qr3KpdUx_vUesFDu1E5Hup&index=18