> 백엔드 개발 > C++ > Meyers의 싱글톤 패턴은 C 11 이상에서 스레드로부터 안전합니까?

Meyers의 싱글톤 패턴은 C 11 이상에서 스레드로부터 안전합니까?

Patricia Arquette
풀어 주다: 2024-12-30 17:04:10
원래의
898명이 탐색했습니다.

Is Meyers' Singleton Pattern Thread-Safe in C  11 and Later?

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

지연 초기화를 사용한 Meyers의 싱글톤 패턴 구현은 스레드 안전성에 대한 의문을 제기합니다.

마이어스의 싱글톤 구현

싱글턴 패턴에 제공되는 코드는 다음과 같습니다.

static Singleton& instance()
{
     static Singleton s;
     return s;
}
로그인 후 복사

스레드 안전성 분석

C 11에서는 이 구현은 §6.7 [stmt.dcl]의 보장으로 인해 스레드로부터 안전합니다. p4:

"변수가 초기화되는 동안 제어가 선언을 동시에 입력하면 동시 실행은 초기화가 완료될 때까지 기다려야 합니다."

GCC(버전 4.3 이후) 및 Visual과 같은 컴파일러 Studio(2015년부터)에서 이 기능을 지원합니다.

C 03 구현

C 03에서는 코드가 스레드로부터 안전하지 않았습니다. Meyers의 기사 "C and the Perils of Double-Checked Locking"에서는 이러한 우려를 논의합니다. 동시성을 보장하기 위해 인스턴스화 방법에 대한 전체 잠금이 권장되는 반면, 이중 확인 잠금 변형은 메모리 장벽 없이 특정 아키텍처에서 경쟁 조건에 직면할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿