본문/내용
1. Volatile의 개념
Volatile는 병렬 프로그래밍 환경에서 변수의 가시성(visibility)을 보장하는 키워드이다. 멀티스레드 환경에서 여러 스레드가 하나의 변수에 접근할 때, 이 변수의 값은 각 스레드의 캐시에 저장되어 있어 서로 다른 스레드들이 변수의 최신 값을 읽지 못하는 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 Java와 C에서는 Volatile 키워드를 사용한다. Java에서는 변수 선언 시 `volatile`이라고 명시하며, C에서는 `_Atomic` 또는 `volatile` 키워드를 사용한다. 이러한 키워드를 선언된 변수는 모든 스레드가 읽거나 쓸 때마다 메모리에서 직접 접근하게끔 하여, 캐시 일관성을 유지하도록 한다. 즉, Volatile 변수는 CPU 캐시를 무시하고 항상 주기억장치에서 값을 가져오거나 저장하는 성격이 있다. 이를 통해 스레드 간에 데이터 일관성을 보장하는 효과가 있다. 예를 들어, 스레드가 종료될 때까지 공유 변수의 값이 변경되지 않거나, 특정 상태 플래그를 확인하는 경우에 Volatile 변수로 선언하면 안정성을 확보할 수 있다. 시스템 통계에 따르면 멀티스레드 환경에서 공유 변수의 가시성 문제가 원인인 버그 발생률이 전체 병행성 버…