-
shared_ptr의 래퍼런스 카운팅은 스레드 세이프 한가? 정말?프로그래밍/c++ 2018. 4. 22. 13:23반응형// CLASS _Ref_count_baseclass _Ref_count_base{// common code for reference countingprivate:virtual void _Destroy() _NOEXCEPT = 0;virtual void _Delete_this() _NOEXCEPT = 0;_Atomic_counter_t _Uses;_Atomic_counter_t _Weaks;// ....long _Use_count() const _NOEXCEPT{// return use countreturn (_Get_atomic_count(_Uses));}
스레드 세이프 하다.
여기에서 스레드 세이프 하다는 건 감싸진 오브젝트가 아닌 래퍼런스 카운터를 관장하는, 컨트롤 블록이 스레드 세이프 하다는 것이다.
종종 스레드 세이프 하지 않다는 얘기가 들리는 건 shared_ptr로 오브젝트를 감싼다고 그 오브젝트가 스레드 세이프 해지지 않는다는 걸 의미한 것을 잘못 이해했다던가,
shared_ptr이 표준에 들어오기 이전(c++11 이전), 스마트 포인터 구현이 제각각일 때 사용 경험이 있는 사람이 그런 말을 할 수 있었을 가능성이 있다.
반응형'프로그래밍 > c++' 카테고리의 다른 글
stl 컨테이너 환형 순회 (0) 2018.05.23 std::void_t<...>의 사용 예 (3) 2018.05.08 std::variant는 참 빠르다 (1) 2018.04.18 std::array와 c array는 다르다? (0) 2018.03.11 const std::string& 대신 std::string_view (0) 2018.02.20