> 백엔드 개발 > C++ > 왜 C의 표준 라이브러리는 `std::shared_ptr`의 비원자 버전을 제공하지 않습니까?

왜 C의 표준 라이브러리는 `std::shared_ptr`의 비원자 버전을 제공하지 않습니까?

Patricia Arquette
풀어 주다: 2024-10-27 00:03:02
원래의
256명이 탐색했습니다.

Why Doesn't C  's Standard Library Offer a Non-Atomic Version of `std::shared_ptr`?

std::shared_ptr의 비원자적 등가

질문:

있습니까? 고유한 원자성이 부족한 std::shared_ptr의 대안은 무엇입니까? 게다가 C 표준 라이브러리에는 왜 비원자적 옵션이 포함되어 있지 않습니까?

답변:

1. 비원자적 대안의 가용성:

C 표준 라이브러리는 std::shared_ptr의 비원자적 변형을 제공하지 않습니다. 그러나 타사 라이브러리에서 이러한 구현을 제공할 수도 있습니다. C 11에 std::shared_ptr이 도입되기 전에 많은 개발자는 잠재적으로 비원자적 옵션을 제공하는 자체 참조 카운트 스마트 포인터를 만들었습니다.

2. C 11의 Atomic std::shared_ptr에 대한 이론적 근거:

C 11 표준화 과정에서 std::shared_ptr의 비원자 버전을 포함하자는 제안이 고려되었고 최종적으로 거부되었습니다. 다음 주장이 이 결정에 영향을 미쳤습니다.

  • 오용 가능성: 스레드 코드로 작성된 비원자 스마트 포인터는 미묘하고 디버깅하기 어려운 오류를 유발할 수 있습니다.
  • 일관성 및 상호 운용성: std::shared_ptr의 일관된 단일 버전을 사용하면 라이브러리 상호 운용성이 촉진되고 혼란이 줄어듭니다.
  • 낮은 성능 비용: 원자적 연산에는 -오버헤드가 없지만 벡터 삭제 및 삽입과 같은 일반적인 작업 중에 원자성 작업을 방지하는 이동 의미론을 사용하면 완화됩니다.
  • 맞춤형 구현: 개발자는 자신만의 비-오버헤드를 생성할 수 있습니다. 원하는 경우 원자 스마트 포인터를 사용할 수 있습니다.

제안된 비원자 버전:

C 11의 거부에도 불구하고 비원자적 스마트 포인터에 대한 제안이 있었을 수 있습니다. Boost 또는 표준 위원회에 제출된 std::shared_ptr의 원자 버전입니다. 그러나 이러한 제안은 공식 표준에 포함될 만큼 충분한 지지를 얻지 못했습니다.

위 내용은 왜 C의 표준 라이브러리는 `std::shared_ptr`의 비원자 버전을 제공하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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