0
我有一个boost :: mutex在两个线程中使用。第一个线程不断锁定和解锁互斥锁。第二个线程仅在特定条件下使用互斥锁。当这种情况发生时,两个线程都会锁定在锁上。什么可能造成这种情况?这两个线程阻塞在调用boost :: mutex :: lock()
关于我的程序的一些随机事实:互斥量是两个线程之间共享的类的数据成员。在第二个线程中,我将一个指针传递给使用它的函数的互斥量,但在第一个线程中,我通过引用使用了互斥量。
你可以发布代码指示线程如何使用互斥? – Tim
只是一个想法。这些函数之间是否有递归调用或循环依赖关系?如果是的话,你将不得不使用递归互斥锁(如果这是你想要的),或者只是复习你的代码,因为它会创建经典的死锁。 –
我发现在第一个线程的关键部分中,一个Win32函数被调用,应该只从第二个线程调用该线程,因为该线程创建了Win32窗口。我不确定在这种情况下我应该做什么礼节。答案与我提出的问题无关。我们是否投票结束? –