我只是想知道如何获得(计数)用于锁定互斥锁的线程,例如考虑以下示例
void _foo(void* arg){
pthread_mutex_lock(&_lock);//[ABC]
//doing something
pthread_mutex_unlock(&_lock);
}
所以问题:如何找出当前有多少线程正在等待锁定pthread中_lock
的{{1}}?或任何其他并行的lib。
还有一个更令人困惑的问题,是否有可能将等待的线程重定向到其他地方?例如,在第一个线程进程之后,等待线程将被重定向到[ABC]
方法,我的意思是在运行时更改代码执行。
答案 0 :(得分:1)
我认为没有一种标准的pthreads方法可以获得等待线程的数量。
关于第二个问题,您可以使用pthread_mutex_trylock()
。
答案 1 :(得分:1)
第二个问题:查看pthread_mutex_trylock()
根据结果(EBUSY
或不foo()
)继续bar()
或致电{{1}}。