其實我正在研究一個應用程序,它使用多個線程來處理任務數量,父應用程序接收任務的輸出,後來被寫入文件,目前我使用arraylist來追加輸出,但是從隊列中移除項目時發生速度緩慢。 我想轉換arraylist部分鏈接列表優化讀取和清除,任何人都可以確認我們 如果linkedList .Net的實現是線程安全的,甚至使用arraylist是線程安全?是LinkedList實現.Net線程安全嗎?
回答
的reference指出:
這種類型不是線程安全的。如果需要通過多線程訪問 LinkedList(Of T),您需要 實現自己的同步 機制。
甲鏈表(OF T)可以支持 多個讀者同時,只要 作爲收集不被修改。 儘管如此,通過 集合列舉本質上不是線程安全的過程。在罕見的 情況下,枚舉與012寫入訪問競爭 ,集合 必須在整個枚舉過程中被鎖定。要允許 由多個線程訪問 讀取和寫入,您必須執行您自己的同步 。
編輯:
至於ArrayList中,該reference狀態:
公共靜態(在Visual Basic中的Shared)這種類型的 成員都是線程安全的。 任何實例成員不是 保證是線程安全的。
只要 集合沒有被修改,ArrayList可以同時支持多個 閱讀器。若要 保證ArrayList的線程安全,則必須通過 同步方法返回的包裝完成所有操作 。
枚舉整個集合是 本質上不是線程安全的 過程。即使集合是 同步,其他線程仍然可以 修改集合,這將導致枚舉器引發 引發異常。 要在枚舉中保證線程安全,您可以在整個 枚舉期間鎖定 集合,或者捕獲由其他 線程所做更改產生的異常 。
既然您已將它標記爲C#4,請使用BlockingCollection<T>
。
它是線程安全的,並且允許您在需要時節制流量。
這個集合類是爲這個任務設計的。但是,最終寫入文件時,集合的性能應該無關緊要。
命名空間System.Collections.Concurrent下的任何線程安全集合都應該爲您完成這項工作。然而,從性能的角度來看,我認爲這些性能不如Array好,因爲考慮到會有一些同步化開銷。你的兩個請求的線程safetiness和性能可能不是在同一時間achieveable,您可能需要達成某種折中點
如需更多信息,請參閱http://msdn.microsoft.com/en-us/library/dd267265.aspx
- 1. 單線程實現線程安全嗎?
- 2. .NET 2.0:File.AppendAllText(...) - 線程安全的實現
- 3. .NET DateTime線程安全嗎
- 4. .NET System.Net.CookieContainer線程安全嗎?
- 5. 以下實現線程安全嗎?
- 6. LinkedList是線程安全的,當我使用offer和poll進行訪問時,它是線程安全的嗎?
- 7. 是java.sql.Connection線程安全嗎?
- 8. 是CreateChildContainer()線程安全嗎?
- 9. 是Thread.getStackTrace()線程安全嗎?
- 10. 是DocumentBuilder.parse()線程安全嗎?
- 11. 是javax.sql.DataSource線程安全嗎?
- 12. 是TcpClient.Available線程安全嗎?
- 13. 是sqlite.swift線程安全嗎?
- 14. 是winsock2線程安全嗎?
- 15. 是unique_ptr線程安全嗎?
- 16. 是SplittableRandom.split()線程安全嗎?
- 17. 線程安全(是嗎?)
- 18. 是IP2Location線程安全嗎?
- 19. 是System.DirectoryServices.AccountManagement.GroupPrincipal線程安全嗎?
- 20. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue線程安全嗎?
- 21. 是java.util.UUID線程安全嗎?
- 22. 是enumerateUsingBlock:線程安全嗎?
- 23. 是java.util.concurrent.Future線程安全嗎?
- 24. 是DatagramSocket.send線程安全嗎?
- 25. 是長線程安全嗎?
- 26. 是SpelExpression線程安全嗎?
- 27. 是UImage.AsPNG()線程安全嗎?
- 28. 是ArrayDescriptor線程安全嗎?
- 29. Oracle Java KeyStore實現是線程安全的嗎?
- 30. IStorage的複合文件實現是線程安全的嗎?
ArrayList的將是緩慢反正因爲裝箱/拆箱,你不能使用處理特定類型的集合嗎? – 2011-04-26 11:01:15
我有成千上萬的記錄收到/秒,這意味着我必須有一點記憶意識:) – CodeWrite 2011-04-26 11:04:02
如果列表存儲ValueTypes只會有拳擊。我沒有從Q中讀到。 – 2011-04-26 11:12:15