> 백엔드 개발 > C++ > C 표준 라이브러리에 std::shared_ptr에 해당하는 비원자적 요소가 없는 이유는 무엇입니까?

C 표준 라이브러리에 std::shared_ptr에 해당하는 비원자적 요소가 없는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-03 03:06:29
원래의
838명이 탐색했습니다.

Why is there no non-atomic equivalent of std::shared_ptr in the C   standard library?

std::shared_ptr의 비원자적 동등 사례 조사

소개

C 11의 스마트 포인터는 공유 소유권을 위한 기본 선택인 std::shared_ptr과 함께 메모리 관리를 위한 강력한 메커니즘을 제공합니다. 그러나 원자적 특성으로 인해 특정 시나리오에서는 불필요하거나 바람직하지 않을 수 있는 오버헤드가 발생합니다. 이 기사에서는 표준 라이브러리에 std::shared_ptr에 해당하는 비원자적 요소가 없다는 사실을 살펴보고 이 결정의 잠재적 이유를 조사합니다.

비원자적 대안 검색

질문의 전제와는 달리 std::shared_ptr은 의 유일한 스마트 포인터가 아닙니다. 원자성을 특징으로 합니다. std::weak_ptr도 원자적이므로 비소유 참조가 필요한 시나리오에 대한 잠재적인 솔루션을 제시합니다. 그럼에도 불구하고 전용 비원자 shared_ptr 대안에 대한 관심은 라이브러리에 인지된 공백이 있음을 시사합니다.

제외 이유

비원자 공유 포인터의 잠재적 이점에도 불구하고 원자 공유_ptr, C 표준 위원회는 C 11에 하나를 포함하지 않기로 결정했습니다. 이 결정은 2010년 Rapperswil 회의의 열띤 논쟁에서 비롯되었습니다. 포함에 반대하는 주장은 다음과 같습니다.

  • 향후 스레드 사용 가능성: 비원자 shared_ptrs는 다중 스레드 컨텍스트에서 실수로 사용되어 미묘하고 감지하기 어려운 오류로 이어질 수 있습니다.
  • 스마트 포인터 디자인의 일관성: 모든 사용 사례에서 참조 계산을 균일하게 처리하는 통합된 shared_ptr은 상호 운용성과 라이브러리 사용을 단순화합니다.
  • 최소 성능 비용: shared_ptr의 원자 연산은 엄청나게 비싸지 않습니다. 특히 원자 동작을 우회하는 이동 연산을 고려하면 더욱 그렇습니다.
  • 사용자 선택: 개발자는 자신만의 비원자 참조 카운트 스마트를 자유롭게 만들 수 있습니다. 원하는 경우 포인터를 사용하세요.

결론

C 11 표준에서 std::shared_ptr에 해당하는 비원자적 요소가 없다는 점은 다각적입니다. 이는 "사용한 만큼 지불" 원칙을 타협하지만 일관성, 오류 방지 및 최소 성능 오버헤드를 우선시합니다. 이 결정은 최적의 유연성 제공과 코드 견고성 보장 간의 절충안을 반영합니다.

위 내용은 C 표준 라이브러리에 std::shared_ptr에 해당하는 비원자적 요소가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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