![](/img/trans.png)
[英]What is the reason for a joinable std::thread not join automatically?
[英]What happens if a std::thread calls joinable on itself?
由于我在程序中进行了更改,因此出现了问题,这可能是由于线程本身调用了joinable。 在这种情况下会发生什么?
编辑:我做了一些调试,问题是Joinable方法。
std::mutex threadMutex;
std::thread tAudioProcessingThread;
void getLock()
{
if (tAudioProcessingThread.joinable())
threadMutex.lock();
}
void releaseLock()
{
if (tAudioProcessingThread.joinable())
threadMutex.unlock();
}
从两个现有线程中调用函数getLock()
和releaseLock()
。 在创建线程之前,我在调用threadMutex.lock()
和threadMutex.unlock()
函数时遇到问题,因此我必须制作这些替代函数,以便仅在线程存在时调用锁。
线程本身无法join()
,但是线程本身调用joinable()
并没有错。
t.joinable()
所做的全部工作就是测试t.get_id() != std::thread::id{}
因此从哪个线程调用它没有区别。
Cameron是正确的,我的错误是代码中的其他地方,因此这些功能不是必需的,并且锁定已正确完成。
@πάνταῥεῖ:我在创建线程之前和之后调用的函数上有锁,所以我不得不将锁放在那里。
PS:现在还不能发表评论,这就是为什么编辑如此之多等等的原因。
多谢你们
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.