簡體   English   中英

如果std :: thread自身調用可聯接,會發生什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM