livelock

    1熱度

    1回答

    我已經遇到了SQL Server的這個行話,我只是無法理解它究竟發生在SQL Server中。我正在看一些SQL Server的例子,它發生的地方... 我一直在谷歌搜索,但所有不斷收到是2人在走廊的例子。

    3熱度

    1回答

    當用於計算的函數在同一映射上調用#computeIfAbsent時,我在併發哈希映射#computeIfAbsent中命中了活鎖條件。 概念上調用調用看起來像下面 final Map<String, Boolean> map = new ConcurrentHashMap<>(); map.computeIfAbsent("k1", k1 -> map.computeIfAbsent("k2",

    0熱度

    1回答

    我是Java的新手,正在嘗試學習活鎖的概念。 我發現了一個livelock在線的好例子,那裏的丈夫和妻子正在嘗試吃湯,但他們之間只有一個勺子。每個配偶都太客氣了,如果另一個還沒有吃,就會通過勺子。 我的問題是,我們應該如何解決一般活鎖問題以及這個特殊的例子?如果有人願意修改代碼並提供一些代碼示例來演示解決該問題的方法,那將是非常好的。預先感謝任何幫助! public class Livelock

    4熱度

    1回答

    進程A和B兩者都在Redis資源R上運行。 這些進程可以並行執行,並且我需要兩個進程在它們進行更改時確定R的值。因此我使用Redis transactions和WATCH command。從文檔中:「只有在沒有其他客戶修改任何WATCHed密鑰的情況下,我們纔要求Redis進行交易,否則根本不會輸入交易。」 要在失敗的情況下重試,建議的方法是循環Watch/Multi-exec循環直到成功。但是,

    3熱度

    4回答

    併發更新非同步HashMap顯然會導致活鎖或其他數據損壞;爲了避免這種情況,應該使用併發版本或實現同步機制。 可併發往HashMap.get()變化HashMap中的狀態的呼叫,像老調重彈? 更新: 有網友評論想知道這個問題的實際問題時,除了與挑剔的數據結構行爲理論的喜悅。 如果get()不改變HashMap的狀態(並且不能導致另一個reaseon的活鎖),那麼比單個線程可以提前創建一個HashM

    2熱度

    1回答

    我正在運行一個Xenomai實時線程,有時需要調用gettimeofday(),以便根據ptpd找出當前時間。 但是,這樣做似乎是不安全的:特別是,它偶爾會將Xenomai線程和Linux內核置於「活鎖」狀態,導致gettimeofday()旋轉CPU並永不返回,如here所述。 我的問題是,是否有一種安全的方法從Xenomai實時線程獲取gettimeofday()的信息?我正在考慮將我自己的g

    1熱度

    1回答

    我正在開發具有兩個線程:消費者和生產者的循環緩衝區。 我正在使用主動等待Thread.yield。 我知道可以用信號量做到這一點,但我想要沒有信號量的緩衝區。 兩者都有一個共享變量:bufferCircular。在位置陣列的p 雖然緩衝器未滿的有用的信息,producer寫入數據,並同時有一些有用的信息consumer在位置陣列的c讀取數據。來自BufferCircular的變量nElem是尚未讀

    2熱度

    4回答

    我有一個與Java線程活鎖有關的有趣問題。在這裏。 有四個全局鎖 - L1,L2,L3,L4 有四個線程 - T1,T2,T3,T4 T1需要鎖L1,L2,L3 T2需要鎖L2 T3需要的鎖L3,L4 T4需要鎖L1,L2 所以,問題的模式是 - 任何線程都可以運行並以任何順序獲取鎖。如果任何線程檢測到它所需的鎖不可用,它將釋放之前獲取的所有其他鎖,然後再次重試之前等待一段固定時間。循環重複導致活

    0熱度

    1回答

    我想用Dekker的算法做一個簡單的程序,但有3個進程。這裏是我的代碼: class DekkerAlg { static final int iter = 2000000; static volatile int sharedResource = 0; /* Thread P wants to enter in the CS */ static volatile boolean wan

    0熱度

    2回答

    可以使用sem_trywait()讓你進入死鎖或活鎖?