我寫了一個簡單的應用程序,它構建了999個項目的並行字典,然後使用ThreadPool.SetMinThreads()
方法激發50個線程。然後,我遍歷999個字典條目並更新數據庫中的一條記錄,以標記條目已被處理。打電腦限制?
運行應用程序時,我可以看到線程已經啓動,然後我可以運行SQL查詢來查看正在更新的記錄。到目前爲止,所有這些工作都很順利。當一些初始線程完成時,下一批線程開始(這正是我想要的)。我仍然可以看到數據庫中的記錄仍在更新,告訴我應用程序按預期工作。我仍然可以看到正在創建的新線程,然後發生死鎖。當我看到僵局時,它是從最初的50個線程中的一個開始的。這是我的問題進來的地方。
我正在使用6Gb RAM的3Ghz雙核處理器上運行應用程序。我的SQL Server實例也在同一臺機器上運行,但我不會認爲這會是一個問題。該應用程序是一個概念證明,但無法在開發環境中運行50個線程看起來並不樂觀。我知道在生產環境中,SQL實例將在單獨的計算機上運行,應用程序也一樣。有任何想法嗎?
什麼樣的死鎖 - 在SQL或在您的代碼? –
死鎖與內存消耗無關,並且與共享狀態有關。 –
對不起,它們是SQL死鎖 –