c - 线程。如何检查互斥体是否已锁定

标签 c pthreads mutex

我需要编写 bicycle 函数,该函数等于 pthread_mutex_trylock(...)
我该怎么做?
我找不到这个函数的源代码,而且恐怕即使我找到它们,它们也太复杂而无法复制粘贴。但无论如何我都会为这个链接投票。
我需要编写简单的函数,如果互斥体未锁定,则该函数可以仅获取互斥体,如果未锁定则返回。

最佳答案

我的感觉是您在问题中没有提供足够的信息。 glibc 中实际的 pthread 互斥实现是一个非常复杂的野兽(它旨在支持许多用例和策略)并且几乎不适合训练任务。

因此,您实际上可能需要做一些与深入研究 pthread 互斥体内部不同的事情。

一种可能性:您使用 pthread_mutex_trylock 的替代方案可能就足够了。这种替代方案确实存在,称为 pthread_mutex_timedlock (以 0 超时调用它)。

另一种可能性:您可能需要自己的互斥体实现(基于低级原语,例如 Linux 上的 futex)。这也不太复杂:http://locklessinc.com/articles/mutex_cv_futex/ .

关于c - 线程。如何检查互斥体是否已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691404/

相关文章:

c - 如何确保线程被阻塞?

C——指针问题和void方法问题

c++ - 将虚拟假锁与 std::condition_variable_any 一起使用是否安全?

c++ - C/C++ - sem_t 类型的单个信号量按顺序打印数字

c - 如何在c中读取文件输入名称

c - 测试损坏的列表

c++ - 是否有可能检测到线程在 Linux [暂停] 中进行了上下文切换?

c++ - 线程和简单的死锁修复

c - 如何修复警告 : '&&' within '||'

c - 带有指针的 extern 关键字无法传递正确的值