키워드는 멀티 스레드 애플리케이션에서 메모리 액세스를 관리하는 데 중요한 도구입니다. 다른 스레드가 방문하더라도 변수의 값이 항상 최신임을 보장합니다.
Eric Lippert에 따르면 C#의 "volatile
"는 코드 분류 및 레지스터 캐시 최적화를 방지 할뿐만 아니라 메인 메모리를 은닉처.
그러나 그러나 읽기 및 쓰기에 의해 제공되는 보증은 잠금과 같은 동기식 프리미티브보다 약합니다. 실제로 모든 프로세서가 캐시 업데이트를 중단하지 않도록 보장하지는 않지만 읽기 및 쓰기 전후에 메모리 액세스 순서 만 보장합니다. 따라서 Lippert는
반대로, 잠금 장치는 일관된 메모리 판독 및 수정을 보장하고 한 번에 특정 메모리 위치에 액세스하기위한 스레드가 하나만 있는지 확인하는 데 사용해야합니다. 정상적인 상황에서 잠금의 사용이 주요 성능 문제의 매우 구체적인 장면이 아니라면, 잠금 -UP 필드는 더 바람직합니다. volatile
volatile
휘발성에 대한 작별 인사
volatile
위 내용은 C#에서 언제 `휘발성` 키워드를 사용해야 하며 언제 대신 잠금을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!