>백엔드 개발 >C++ >Meyers의 싱글톤 구현은 C 11 및 C 03에서 스레드로부터 안전합니까?

Meyers의 싱글톤 구현은 C 11 및 C 03에서 스레드로부터 안전합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-28 10:33:11201검색

Is Meyers' Singleton Implementation Thread-Safe in C  11 and C  03?

Meyers 싱글톤 구현의 스레드 안전성

지연 초기화를 사용하여 제공된 Meyers 싱글톤 구현에서 코드는 C에서 스레드로부터 안전합니다. 11. C 11 표준(§6.7 [stmt.dcl] p4)에 따르면 여러 스레드가 액세스를 시도하는 경우 초기화 중에 싱글톤을 사용하면 다른 스레드는 초기화가 완료될 때까지 기다립니다.

GCC와 Visual Studio는 모두 이 스레드 안전성 기능(동적 초기화 및 동시성을 통한 소멸)을 지원하지만 구현 날짜는 다릅니다.

  • Visual Studio: Visual Studio 2015부터 지원
  • GCC: 이후 지원 GCC 4.3

반면에 이 코드는 C 03에서는 스레드로부터 안전하지 않습니다. Meyers의 기사 "C와 이중 확인 잠금의 위험성"은 싱글톤 패턴의 다양한 스레드로부터 안전한 구현을 분석합니다. 궁극적으로 Meyers는 (C 03에서) 인스턴스화 방법에 대한 전체 잠금을 사용하는 것이 다양한 플랫폼 간의 동시성을 보장하는 가장 간단한 접근 방식이라고 결론지었습니다. 반면, 이중 검사 잠금 패턴 변형은 메모리 장벽이 명령어 사이에 전략적으로 배치되지 않는 한 특정 아키텍처에서 경합 조건을 유발할 수 있습니다.

위 내용은 Meyers의 싱글톤 구현은 C 11 및 C 03에서 스레드로부터 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.