什么是pthread锁定返回码值?

时间:2017-11-06 18:29:49

标签: c++ c++11 stl pthreads

我正在尝试在我的可执行文件中使用pthreads,它正在崩溃mutex :: lock()调用。在调试器中,我看到崩溃发生在std_mutex.h中,其中对__gthread_mutex_lock()的调用返回值为22的整数。

这是一个专有程序,所以我无法分享它,也无法在较小的程序上重现问题。这个回报值表明我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

以下是检查的可能性:

  1. 此线程已经锁定。
  2. Lock从未正确初始化。
  3. 锁已被销毁。
  4. 锁被一个没有持有它的线程解锁。
  5. Lock的内存被覆盖或损坏。
  6. Lock之前已被一个已经拥有它的线程锁定。
  7. 已复制锁定。
  8. 锁定是动态分配但静态初始化。
  9. 这假设您没有遗漏任何重要信息。例如,我假设您会告诉我们这是一个递归的互斥锁,一个进程共享的互斥锁,还是有任何其他特殊属性。