compare-and-swap

    2熱度

    1回答

    這讓我很困惑。 給定基本原子基元像比較&交換,我可以看到如何實現自旋鎖(從中我可以建立互斥鎖)。 但是,我沒有看到我可以如何建立條件變量。這是如何完成的?

    1熱度

    3回答

    我知道在MacOSX/PosiX系統上,通過g ++有C/C++代碼的原子比較和交換。 但是,我不需要比較 - 我只是想原子交換兩個值。是否有可用的原子交換操作? [Everythign我可以找到的是atomic_compare_and_swap ...我只想做交換,沒有比較]。 謝謝!

    2熱度

    1回答

    鑑於只有比較和交換,我知道如何實現一個鎖。 然而,如何實現自旋鎖 1)的多個線程可以在其上阻斷,與此同時試圖鎖定 2),然後將螺紋是未封端(以及爲了獲取鎖)他們封鎖了嗎? 這有可能嗎?如果不是,我還需要其他哪些原語? 如果是這樣,我該怎麼做? 謝謝!

    6熱度

    2回答

    想象一下帶有兩個線程的程序。他們正在運行下面的代碼(CAS是指Compare and Swap): // Visible to both threads static int test; // Run by thread A void foo() { // Check if value is 'test' and swap in 0xdeadbeef while(!C