我有一個問題,我的代碼嘗試呼叫pthread_mutex_destory()兩次。我需要檢查鎖之前是否被破壞過。
我怎樣才能做到這一點?這會起作用嗎:
void deinit()
{
if(1 == pthread_mutex_trylock(&this->m_lock))
{
(void) pthread_mutex_destroy(&this->m_lock);
}
}
只會檢查互斥鎖是否被鎖定的天氣,或者它還會trylock顯示它是否被洗掉的天氣?
uj5u.com熱心網友回復:
一旦你銷毀了 aac 物件,留下的資料就是垃圾。c 不允許你這樣做。(確實如此,但您必須明確要求。)但是您使用的是 ac 庫,因此您必須自己做所有事情。
所以你有幾個選擇:
使用與 c 很好地配合使用的 std::mutex 。但因此,您的互斥鎖將與您的包含類具有相同的生命周期。(這是整潔的)
僅
pthread_mutex_destroy在您的解構式中使用。結果與上述相同。當你的物件被破壞時,你的互斥鎖被破壞了,這只會發生一次。std::optional如果未初始化,則使用 an來屏蔽互斥資料。不推薦,因為它是 c 和 c 的丑陋組合。使用 bool 來跟蹤是否已啟動互斥鎖。這也很棘手和丑陋,因為它容易出錯。
我不能更具體,因為我不知道其余的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531154.html
標籤:C 多线程线程
