Meyers 싱글톤 구현의 스레드 안전성
지연 초기화를 사용하여 제공된 Meyers 싱글톤 구현에서 코드는 C에서 스레드로부터 안전합니다. 11. C 11 표준(§6.7 [stmt.dcl] p4)에 따르면 여러 스레드가 액세스를 시도하는 경우 초기화 중에 싱글톤을 사용하면 다른 스레드는 초기화가 완료될 때까지 기다립니다.
GCC와 Visual Studio는 모두 이 스레드 안전성 기능(동적 초기화 및 동시성을 통한 소멸)을 지원하지만 구현 날짜는 다릅니다.
반면에 이 코드는 C 03에서는 스레드로부터 안전하지 않습니다. Meyers의 기사 "C와 이중 확인 잠금의 위험성"은 싱글톤 패턴의 다양한 스레드로부터 안전한 구현을 분석합니다. 궁극적으로 Meyers는 (C 03에서) 인스턴스화 방법에 대한 전체 잠금을 사용하는 것이 다양한 플랫폼 간의 동시성을 보장하는 가장 간단한 접근 방식이라고 결론지었습니다. 반면, 이중 검사 잠금 패턴 변형은 메모리 장벽이 명령어 사이에 전략적으로 배치되지 않는 한 특정 아키텍처에서 경합 조건을 유발할 수 있습니다.
위 내용은 Meyers의 싱글톤 구현은 C 11 및 C 03에서 스레드로부터 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!