Visual Studio 2013의 std::mutex
구현이 너무 느립니다. 무거운 무게 뮤텍스를 사용하여 모든 프로세스와 미세한 프로세스 사이에서도 동기화가 이루어질 수 있습니다. 당신이 다른 프로세스와 대화하고 있지 않고 실제로 여분의 속도를 사용할 수 없다면 CRITICAL_SECTION
은 Win32에서 스핀 록을 제공합니다.std :: condition_variable에서 사용할 C++ 11 뮤텍스 개념을 구현할 수 있습니까?
fast_recursive_mutex
을 구현하려고 시도했지만 C++ 11 뮤텍스 개념을 준수하며 사양에 따라 모든 의무를 충족합니다. 모든 감각에서 프로세스간에 동기화를 수행하지 않는 한 std::mutex
의 드롭 인 대체품입니다.
std::lock_guard
및 std::unique_lock
과 잘 작동합니다. 그러나 std::condition_variable::wait(std::unique_lock<std::mutex>&)
이 std::mutex
의 하드 코딩 된 사용으로 인해 내 fast_recursive_mutex
을 허용하지 않기 때문에 std::condition_variable
과 함께 사용하려고 할 때 문제가 발생합니다.
그래서 제 질문은 다음과 같습니다
- 이유는
wait()
는std::mutex
아닌 다른 뮤텍스 유형을 인정하지 않는 이유는 무엇입니까? - 내가 할 수 있는게 있나요? (condition_variable을 다시 구현하지 않은 경우).
"왜 다른 유형을 인정하지 않는가?"라는 첫 번째 질문은 두 개의 다른 'condition_variable'클래스를 작성한 이유와 단순히 템플리트 화 된 뮤텍스 유형이있는 유형이 하나도없는 이유를 묻는 것입니다. – CashCow