deadlock

    9熱度

    2回答

    我正在調試死鎖問題,調用堆棧顯示線程正在等待某些事件。 代碼使用臨界區作爲同步原語我認爲這裏有一些問題。 此外,調試器正在指向某個其他線程擁有的關鍵部分,但鎖定計數爲-2。 根據我的理解,鎖計數> 0表示臨界區域被一個或多個線程鎖定。 所以有可能我正在看右邊的關鍵部分,這可能是死鎖的罪魁禍首。 在哪些情況下,臨界區域是否有負鎖定計數?

    9熱度

    2回答

    我們有一個(目前InnoDB)表,其中包含大約500,000行。這表示要運行的任務隊列。它存儲在一個MySQL數據庫中。 一個持續的基礎,至少每秒一次,但有時更頻繁,我們從中選擇數據並隨後更新一些行。我們每天一次修剪表格中的舊行。 我們開始在桌上發現死鎖,這導致我們的任務處理陷入停滯。這些僵局是在夜間修剪過程中造成的。 DELETE,SELECT和UPDATE的組合意味着基本上沒有什麼生產力可能發

    26熱度

    4回答

    除此之外,我不知道現在是否可以重現它(我已經使用這個特定的應用程序一兩個星期沒有問題),假設我在VS調試器中運行我的應用程序在發生這種情況後,我應該如何去調試死鎖?如果我暫停了程序,並且看到了不同線程發生的位置,我想我可能能夠訪問調用堆棧,但單擊暫停也會導致Visual Studio陷入僵局,直到我殺死了我的應用程序。 除瀏覽我的源代碼樹以查找潛在問題外,還有其他方法嗎?一旦問題出現後,有沒有辦法

    3熱度

    6回答

    在多線程環境中,爲了使線程安全的數組元素交換,我們將執行同步鎖定。 // a is char array. synchronized(a) { char tmp = a[1]; a[1] = a[0]; a[0] = tmp; } 是否有可能,我們可以利用下面的API的上述情況,這樣我們就可以有一個鎖定免費數組元素交換?如果是,如何? http://java.

    1熱度

    1回答

    部署在多臺機器上的應用程序 - 訪問相同的數據庫表。 它讀取MIN行,然後刪除該行。 當發生這種情況的同時,我們從DB2標誌着僵局-913錯誤。 試過下列選項上排已經 1.鎖。 2.發生死鎖後,在應用程序代碼中重新嘗試機制。 似乎沒有任何工作。 任何想法/參考文獻/解決方案? TY

    13熱度

    4回答

    我有一個基本問題。爲什麼以及如何SelectableChannel的註冊方法可以阻止呼叫。 讓我提供一個場景。 我已經在類Register中創建了一個Selector對象,如下所示。 private static Selector selector = Selector.open(); 我也有一個方法在同一類(註冊)以註冊與選擇器通道。 public static SelectionKey r

    1熱度

    2回答

    我正在尋找一種工具,可以在發生之前預測java中的死鎖。 我試圖使用MTrat,但失敗(可能它不支持Sun Hotspot JVM) 有人有一個很好的工具來達到這個目的嗎?

    0熱度

    4回答

    我在兩個C#應用程序中使用(和引用)兩個第三方DLL(a.dll和b.dll)。我遇到了一個可重複的問題,即在調用第三方庫中的函數時這兩個應用程序都處於掛起狀態。 我試圖製作a.dll和b.dll(a2.dll和b2.dll)的副本並在第二個應用程序中使用它,但事實證明a.dll引用了b.dll,anb b.dll引用a.dll,並且不能正確加載。 我懷疑有一個死鎖,但在第三方庫。我無法使用鎖定來

    3熱度

    1回答

    我的應用程序測試在數據庫上相當困難。他們運行create,drop和alter table語句。但是,即使在死鎖的情況下(即檢測鎖定並刪除一個線程),我仍然希望postresql能夠處理這些問題。我也沒有同時運行請求。 但是,在我的情況下,它只是凍結,我不得​​不手動殺死他們關閉手動(它的工作原理,如果我改變稍微運行的順序,但這並不能給我信心)。這些鎖顯示create table語句具有排他鎖,並

    1熱度

    1回答

    在我最近的一個答案,我給了限制訪問的理論信號燈爲例,內存資源: public static byte[] createArray(int size) throws InterruptedException { semaphore.acquire(size); return new byte[size]; } public static void releaseArray(b