>백엔드 개발 >C++ >``를 사용하지 않고 C 11에서 스레드로부터 안전한 싱글톤을 만들 수 있습니까?

``를 사용하지 않고 C 11에서 스레드로부터 안전한 싱글톤을 만들 수 있습니까?

DDD
DDD원래의
2024-10-30 02:34:29299검색

Can You Create a Thread-Safe Singleton in C  11 Without Using ``?

를 사용하지 않고 C 11에서 멀티스레드에 안전한 싱글톤을 구현하는 방법

소개

C 11에서 스레드로부터 안전한 싱글톤을 구현하는 것은 멀티스레딩 도입 이후 논쟁의 주제였습니다. 뮤텍스는 스레드 안전성을 달성하는 간단한 방법을 제공하지만 성능 오버헤드를 초래할 수 있습니다. 이 기사에서는 뮤텍스를 사용하지 않고 다중 스레드로부터 안전한 싱글톤을 구현하는 대체 접근 방식을 살펴봅니다.

동시 대기를 통한 지연 초기화

C 11은 구현을 단순화하는 새로운 언어 기능을 도입합니다. 게으른 초기화. 이제 정적 지역 변수가 이미 초기화된 경우 동시 실행이 대기하므로 수동 잠금이 필요하지 않습니다.

구현

싱글톤 인스턴스를 검색하는 간단한 정적 함수 다음과 같이 구현할 수 있습니다:

<code class="cpp">static Singleton& get() {
  static Singleton instance;
  return instance;
}</code>

이 함수는 컴파일러가 표준을 올바르게 구현하는 한 C 11에서 올바른 동작을 제공합니다.

싱글톤에 대한 반대

이러한 단순화된 구현에도 불구하고 저자는 일반적으로 싱글톤 사용이 권장되지 않는다고 강조합니다. 그들은 본질적인 한계로 인해 싱글톤을 완전히 피하는 것을 옹호합니다.

추가 참고 사항

  1. 원본 코드에 언급된 clear() 함수는 테스트 및 테스트에 사용됩니다. 실제 싱글톤 구현에는 포함되어서는 안 됩니다.
  2. 전문가가 제공한 답변에서는 원자 라이브러리가 참조되지 않습니다.
  3. 질문에 포함된 코드 예제는 분석되지 않습니다. 응답합니다.

위 내용은 ``를 사용하지 않고 C 11에서 스레드로부터 안전한 싱글톤을 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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