我需要编写 bicycle 函数,该函数等于pthread_mutex_trylock(...)
我怎么能这样做?
我找不到这个函数的源代码,我担心,即使我找到它们,它们也太复杂了,无法复制粘贴。但无论如何我都会为这个链接投票。
我需要编写一个简单的函数,如果它没有被锁定就可以使用互斥锁,如果没有则可以返回。
答案 0 :(得分:1)
我的感觉是你没有在你的问题中提供足够的信息。 glibc中实际的pthread互斥体实现是一个非常复杂的野兽(它意味着支持许多用例和策略),并且几乎不适合训练任务。
因此,您实际上可能需要做一些不同的事情,然后深入研究pthread互斥内部。
一种可能性:您可以使用pthread_mutex_trylock
的替代方案。这种替代方案肯定存在并被称为pthread_mutex_timedlock
(以超时0调用它)。
另一种可能性:您可能需要使用自己的互斥实现(基于低级原语,例如Linux上的futex
)。这也不算太复杂:http://locklessinc.com/articles/mutex_cv_futex/。