C死锁检测线程库

时间:2015-03-19 19:43:41

标签: c linux multithreading pthreads deadlock

过去我记得看到C的线程库进行了死锁检测。我不记得它叫什么了,而且我很难找到合适的术语组合来让Google告诉我。

我记得这是:

  • 它有一个非pthreads API。它利用限制API来限制它必须关注的案例。
  • 这是一个你链接的库,而不是像Helgrind这样的外部工具(虽然有些东西告诉我它可能在内部使用过valgrind代码?可能是红鲱鱼)。
  • 它是由一个比较熟悉的名字写的,但我不记得是谁。
  • 它有几种不同的执行模式,因此您可以以不同的方式线性化锁序列。
  • 它是开源的。

谁能告诉我我在想什么?

1 个答案:

答案 0 :(得分:0)

pthread_mutex_t类型是: PTHREAD_MUTEX_NORMAL没有死锁检测重新锁定导致死锁 PTHREAD_MUTEX_ERRORCHECK - 尝试重新锁定时返回错误 PTHREAD_MUTEX_RECURSIVE - 为给定的互斥锁排队多个锁请求(锁定计数)。

这适用于pthread_mutex_lock,pthread_mutex_unlock和pthread_mutex_trylock。

我猜这是你看到僵局讨论的地方。其他类型的死锁 - 例如:通过等待彼此的锁来从两个资源中相互排除两个线程 - 未被检测到。程序员应该检测它们。

我同意这是一个奇怪的问题

请参阅:http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_lock.html