멀티 스레드 프로그래밍에서 어떤 공유 자원에 여러 스레드가 동시에 접근해도 프로그램 실행에 문제가 없는 상태
보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바르게 나오는 것
공유 자원에 하나의 Thread만 접근할 수 있도록 뮤텍스/세마포어로 락을 통제하는 방법
공유 자원에 원자적으로 접근하는 방법입니다.
원자적인 접근?
atomic: 프로그래밍에서 데이터의 변경이 동시에 일어난 것처럼 보이게 하는 것을 의미
공유 자원의 사용을 최대한 줄이고, 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로서 동시 접근을 막는 방법
스레드 호출과 상관 없이 프로그램에 문제가 없도록 작성하는 방법