我只是想知道如何获取(计数)锁定互斥锁的线程数,例如考虑以下示例
void _foo(void* arg){
pthread_mutex_lock(&_lock);//[ABC]
//doing something
pthread_mutex_unlock(&_lock);
}
所以问题是:我如何找出当前有多少线程正在等待锁定 pthread 中 [ABC]
处的 _lock
?或任何其他并行库。
还有一个更令人困惑的问题,是否可以将等待的线程重定向到其他地方?例如,在第一个线程处理之后,等待线程将被重定向到 _bar()
方法,我的意思是在运行时更改代码执行。
最佳答案
第一个问题:在让他们撞到锁之前先数一数。离开锁定状态后倒数。
第二个问题:查看 pthread_mutex_trylock()
根据其结果(是否为 EBUSY
)继续 foo()
或调用 bar()
.
关于c++ - 获取线程用于锁定互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21711653/