캐싱1 volatile 최적화 캐싱(CPU 가 메모리에서 변수를 읽어서 레지스트리에 저장)된 변수에 대해서는 CPU 가 메모리 접근(Read)을 하지 않도록 한다. 이는 멀티태스킹 환경에서 의도하지 않은 상황을 발생시킨다. A 스레드에 캐시된 변수가 있는 상황에서 B 스레드가 해당 변수를 변경(Write) 할때 A 가 캐시된 변수의 값을 사용하면 오류 발생 A 가 정확한 값을 메모리에서 다시 읽어오는 과정이 필요하다. volatile 로 지정된 변수는 최적화를 수행하지 않는다. 필드 변수에만 적용 가능 지역 변수는 volatile 선언 불가 일부 항목에 대해서는 atomic 한 연산(read-modify-write)을 수행하지만, 모두 지원되지는 않음(다중 스레드 안전성은 Interlocked, lock 등을 사용해야 함) 2023. 9. 8. 이전 1 다음