condition-variable

    4熱度

    3回答

    最近我一直在使用pthreads,還有一件事情我還是不太明白。我知道條件變量的設計是爲了等待某個特定的條件變爲現實(或者是'發信號')。我的問題是,這與正常的互斥體有什麼不同? 從我的理解,不是條件變量只是一個互斥鎖與附加邏輯來解鎖另一個互斥鎖(並再次鎖定),當條件成爲真? 僞代碼示例: mutex mymutex; condvar mycond; int somevalue = 0; o

    3熱度

    2回答

    我在下面的代碼中遇到錯誤。 recursive_mutex m_RecurMutex; condition_variable cond; unique_lock<recursive_mutex> lock(m_RecurMutex); cond.wait(lock); // Error Here. 造成此錯誤的原因是什麼?

    15熱度

    1回答

    這裏是使用條件變量的典型方式: // The reader(s) lock(some_mutex); if(protected_by_mutex_var != desired_value) some_condition.wait(some_mutex); unlock(some_mutex); // The writer lock(some_mutex); protecte

    0熱度

    3回答

    我希望有兩個線程。第一個線程1偶爾會調用下面的僞功能: void waitForThread2() { if (thread2 is not idle) { return; } notifyThread2IamReady(); // i.e. via 1st condition variable Wait for thread2 to finish

    1熱度

    3回答

    我當前對條件變量的理解是所有被阻塞的(等待的)線程都被插入到一個基本的FIFO隊列中,當signal()被調用時,第一個隊列被喚醒。 有沒有什麼辦法可以修改這個隊列(或創建一個新的結構)來執行優先級隊列呢?我一直在考慮這個問題,但大多數解決方案最終都受到C.V.和互斥體固有的隊列結構的阻礙。 謝謝!

    1熱度

    3回答

    每個Java對象(及其類)都有一個關聯的監視器。在pthread術語中,Java監視器相當於可重入互斥和條件變量的組合。 對於鎖定,Win32 API提供Mutex對象(可重入但重量級)和關鍵部分(不可重入但輕量級)。它還提供了其他同步結構,例如Semaphores和Events,但沒有明確的條件變量概念。 如果我正在編寫JVM,我怎麼能使用這些Win32概念來實現Java監視器?

    2熱度

    3回答

    得到假設我有3個POSIX線程一個C程序,共享的全局變量,互斥鎖,和條件變量,其中兩個是執行以下僞碼: ...process data... pthread_mutex_lock(&mutex); variable = data_ptr; pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); 而第三個運行: while(1)

    3熱度

    3回答

    對於某些併發代碼,我想將一堆信號連接成一個電路。在.NET中,我們可以對一組信號執行WaitAll或WaitAny。我想做這樣的事情: WaitAny (WaitAll (c1, c2), WaitAll (c3, c4)) ; 不幸的是,圖書館不支持將這些操作組合成更復雜的樹。我的問題是(1)有沒有辦法在.NET中做到這一點? (2)在任何語言中是否都有一個精巧的庫? [編輯:科裏要求更多信