![](/img/trans.png)
[英]condition variable - why calling pthread_cond_signal() before calling pthread_cond_wait() is a logical error?
[英]How do I signal to abort/wake all threads waiting on a condition variable before calling pthread_cond_destroy?
我知道當有1個以上的線程在等待條件變量時調用pthread_cond_destroy()時會發生不確定的行為,並且我正在尋找一種變通方法,以便在調用pthread_cond_destroy()之前向所有等待條件變量的線程發送喚醒信號 。
如果條件變量有效,我的CV類析構函數將調用pthread_cond_destroy()。 因此,我想到了:
在調用pthread_cond_destroy()之前進行廣播,但這只會喚醒1個線程。 我希望析構函數成功執行,並且沒有線程應該能夠在cv對象上等待(在析構對象上不進行解引用)。
信號計數(以及變通方法1)是否可以解決此問題? 如果是這樣,我如何確保在〜CV()成功之前已計划(喚醒)所有等待線程?
如果使用C ++ 11線程/條件變量,是否可以解決此問題?
這是我的操作方式(假設您要破壞條件變量,因為您正在清理並希望線程退出;如果您不希望線程退出,則不應破壞條件變量,因為它們是使用):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.