我有一个案例,我的算法的决定是基于共享的深度std::recursive_mutex
。访问std所使用的所有者计数器:: recursive_mutex
#include <iostream>
#include <mutex>
#include <thread>
int g_i = 0;
std::recursive_mutex g_i_mutex;
void bar() {
std::lock_guard<std::recursive_mutex> lock(g_i_mutex);
switch (get_counter(g_i_mutex)) { // some way to find the number of owners
case 1: std::cout << "depth 1\n"; break;
case 2: std::cout << "depth 2\n"; break;
default:;
}
}
void foo() {
std::lock_guard<std::recursive_mutex> lock(g_i_mutex);
std::cout << "hello\n";
bar();
}
int main() {
foo(); //print hello then depth 2
bar(); //print depth 1
}
我读过递归互斥持有某种类型的使用次数,并增加它们与每个呼叫减少它来锁定/解锁,有没有访问该信息的方法吗?
有可能会是一个相对的地方,但不是[接口]的一部分(http://en.cppreference.com/w/cpp/thread/recursive_mutex)。 –
不是以便携的方式,您仍然可以访问'std :: recursive_mutex :: native_handle()',它可能会为您的实现提供更丰富的接口。 – Jarod42