c++ - 获取线程用于锁定互斥锁

标签 c++ multithreading concurrency parallel-processing pthreads

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

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/

相关文章:

c++ - 从列表/vector 创建嵌套 for 循环的最佳方法是什么?

php - "async"php 请求中的 sleep 函数正在停止其他请求中的交互?

c++ - 条件等待开销

java - 什么是javac/java文件系统并发契约?

c++ - 获取运行特定进程的处理器数量

c++ - 如何从 OpenCL 访问 OpenCV UMat (gpu) 缓冲区?

c - 使用互斥锁时, "printf"输出两次(或更多?我不确定)?

go - Go 中的并发和超时

asp.net - Lucene.Net 是否管理访问同一索引的多个线程,一个索引而另一个正在搜索?

c++ - 为什么 GLEW 说我没有扩展?