2012-10-18 7 views
6

std::shared_lock 템플릿 클래스의 새로운 표준에서 빠져 있습니다. Boost.Thread에는 boost::shared_lock이 있으며 심지어 boost::upgrade_lock이 있습니다.표준 C++ 11에서 shared_lock 또는 upgrade_lock을 만드는 방법은 무엇입니까?

왜 C++ 11에는 std :: shared_lock과 std::unique_lock이 없습니까?
boost::shared_lock과 비슷한 동작을 얻을 수 있지만 순수한 C++ 11에서는 어떻게 얻을 수 있습니까?

boost::shared_lock<std::mutex>을 사용하려고 생각했지만 std::mutex에는 lock_shared() 멤버가 없으므로별로 의미가 없습니다. 또한 std::shared_mutex과 같은 것은 없습니다.

+0

이미 부스트를 사용하고 있다면,'boost :: shared_mutex'를 피하기 위해'std :: mutex'를 사용하지 않는 것이 좋습니다. –

답변

11

하워드가 제안한 std::shared_mutex에 대한 제안은 C++ 11에서 적절하게 고려할 시간이 부족했기 때문에 거절되었습니다. 그는 C++ 17에서 다시 제안했으며, 이번 주 포틀랜드 회의에서 논의되고 있습니다.

부스트를 사용할 수 있다면 그럴 수도 있습니다. 표준화를위한 새로운 기능은 없을 것입니다.

즉, shared_mutex을 사용하면 실제로 이점이 있는지 확인하는 것이 좋습니다. 많은 경우 뮤텍스 자체의 경합으로 인해 성능 향상을 기대하기 어렵습니다.

+0

Anthony에게 대답 해 주셔서 감사합니다. 이후로 나는 하워드의 제안에 대해 약간의 파기와 토론을 한 것보다 : http://permalink.gmane.org/gmane.comp.lib.boost.devel/211180 –

관련 문제