获取线程以锁定互斥锁

时间:2014-02-11 19:53:41

标签: c++ multithreading concurrency parallel-processing pthreads

我只是想知道如何获得(计数)用于锁定互斥锁的线程,例如考虑以下示例

void _foo(void* arg){
pthread_mutex_lock(&_lock);//[ABC]
//doing something
pthread_mutex_unlock(&_lock);
}

所以问题:如何找出当前有多少线程正在等待锁定pthread中_lock的{​​{1}}?或任何其他并行的lib。

还有一个更令人困惑的问题,是否有可能将等待的线程重定向到其他地方?例如,在第一个线程进程之后,等待线程将被重定向到[ABC]方法,我的意思是在运行时更改代码执行。

2 个答案:

答案 0 :(得分:1)

我认为没有一种标准的pthreads方法可以获得等待线程的数量。

关于第二个问题,您可以使用pthread_mutex_trylock()

答案 1 :(得分:1)

第一个问题:在让它们进入锁定之前计算它们。在离开锁定状态后对它们进行计数。

第二个问题:查看pthread_mutex_trylock()根据结果(EBUSY或不foo())继续bar()或致电{{1}}。