有限等待條件下實現信號量的方法是什麼?有限等待信號燈
我知道可以通過將在信號量上等待的進程列表保持爲FIFO來遵循有界的等待標準。 但是,有沒有其他方法可以在不對正在使用的列表類型施加任何約束的情況下做到這一點?
有限等待條件下實現信號量的方法是什麼?有限等待信號燈
我知道可以通過將在信號量上等待的進程列表保持爲FIFO來遵循有界的等待標準。 但是,有沒有其他方法可以在不對正在使用的列表類型施加任何約束的情況下做到這一點?
沒有什麼能阻止你構建任何一種你想複雜生產者 - 消費者類的,但它可以是不平凡:
1)使用互斥鎖來控制訪問線程管理數據,既是生產者又是消費者線程。
2)在互斥體內部,使用任何複雜的算法/容器/無論做什麼 - 它在那裏很好,很安全。 3)如果一個線程發現它由於某種原因不能繼續進行,它應該獲得一個信號量,將其存儲在管理數據中,退出互斥體並等待信號量。如果一個線程需要釋放一些可能允許另一個線程運行的資源,它應該進入互斥量,分析管理數據,並且如果它發現現在可以允許運行的線程信號,他們退出互斥體之前的信號量。
請注意,這是'我奇怪的線程鎖定/管理要求Thingy'的通用渠道。它涵蓋了瘋狂的wondercontainers,(你必須使用如下定義的變量幾何,多級反饋超級隊列),瘋狂的多資源約束(線程AB24只能運行,如果它有5輛車,三個停車柱,兩個粉紅色的牙刷和爆炸式的自殺式腰帶),以及週五下午帶着一瓶龍舌蘭酒的教授夢寐以求的所有其他奇怪而美妙的事物。
一般來說,沒有。 IME,用於信號量的線程容器是FIFO隊列。我想,如果你有來源,例如。對於Linux,您可以使用其他列表類,如果您需要,出於某種原因(?)。 –