【发布时间】:2011-12-22 21:34:03
【问题描述】:
我正在做 C++ 多线程编程。我使用互斥锁来读取和写入队列以避免死锁。目前,我只为
启动 1 个线程 pthread_mutex_lock(&the_mutex);
但是,在 GDB 中,我的代码在这里被冻结,它处于待处理状态。
为什么?只有一个线程!!!
谢谢
【问题讨论】:
-
如何初始化互斥锁?
-
我在类控制中使用 pthread_mutex_init(&mutex, NULL)。
-
由于您似乎假设“锁定它的线程已经可以再次锁定它”,您可能正在寻找递归互斥锁 (
PTHREAD_MUTEX_RECURSIVE)。关于这一点,请参阅:stackoverflow.com/questions/187761/… - 通常,可以实现这种行为。但递归锁定也往往会导致细微的错误。
标签: c++ linux multithreading mutex deadlock