2012-05-03 27 views
1

我在System.Data.SQLite之上編寫了一個庫,並意識到它(我的庫)在使用Parallel.ForEach時具有不可預知的行爲。我可能會最終調試(即如果我花時間),最有可能的是鎖定正確的部分,但現在讓我們假設我想阻止使用Parallel.ForEach,或者強制使用我的庫來允許(或導致)只有一個線程,我將如何繼續?防止或禁止使用Parallel.ForEach

回答

5

您無法控制API如何被外部代碼使用。如果您在發佈之前絕對無法解決這個問題,那麼最好在文檔中明確說明故障情況(包括XML註釋和任何類型的「幫助文件」)。

+2

這讓我想起'Parallel.ForEach'(等)已經發現了很多滴答時間炸彈。訪問獨特的資源,取消選中,解鎖... – MPelletier

+0

聽起來像你有一些重構要做! –

+0

「我感覺到在原力的一個很大的騷動,好像數百萬條線程突然在恐怖中大聲喊叫,並突然沉默。」 – MPelletier

3

一些快速的線程靜態屬性可能會解決您的併發問題,但這聽起來像是一個更大的冰山一角。修復根本原因,而不是症狀。