想知道如果有一個現有的環形緩衝區在.NET只有一個作家,但可以有多個使用者?不用說,有多個線程從這個緩衝區讀取(但只有一個線程寫入),所以實現必須是線程安全的。.NET中可以有多個使用者的現有環形緩衝區?
2
A
回答
1
看看這篇文章的真的很不錯http://www.albahari.com/threading/part5.aspx我建議你想要的BlockingCollection<T>
+0
謝謝!結束使用BlockingCollection,因爲消費線程必須等待生產者線程創建新數據。嘗試使用ConcurrentQueue和帶有Yield()的輪詢系統,CPU平均上升2%至10%。 – Contango
1
看看ConcurrentQueue
和similar - 這是線程安全的,速度非常快,因爲大多數的事情來實現無鎖......他們可以處理多個消費者甚至多個作家......
0
每當緩存+在.NET線程你想要的Rx。見new ReplayBuffer<T>(int)
。 http://msdn.microsoft.com/en-us/library/hh229429.aspx
最後我聽說Disruptor.NET有很多錯綜複雜的細節需要在獲得任何性能優勢之前瞭解。我建議先用Rx建模,當你有小的(< 10k)數據集在Rx中工作時,轉向Disruptor,然後關注性能。
相關問題
- 1. debugfs - 環形緩衝區實現-linux
- 2. 帶有多個繪製緩衝區的幀緩衝區
- 3. FreeBSD:有關NIC環形緩衝區,mbufs和bpf緩衝區的問題
- 4. Java - 環形緩衝區
- 5. 具有可變大小項目的循環緩衝區實現
- 6. 有多少個nginx緩衝區太多?
- 7. 具有循環緩衝區的多生產者單一消費者
- 8. 我可以有多個GL_ARRAY_BUFFER緩衝區嗎?
- 9. 帶有多個(兩個)GUI /圖形層或緩衝區的Qt
- 10. Java中的環形緩衝區(隊列)
- 11. 估計PostgreSQL緩衝區緩存中有多少內存可用?
- 12. 生產者 - 使用環緩衝區和線程的消費者
- 13. 如何在C中實現循環列表(環形緩衝區)?
- 14. PostgreSQL中的「緩衝區」有多大?
- 15. Recv環形緩衝區vs簡單緩衝區
- 16. matlab中多邊形的緩衝區
- 17. 標準gcc發行版中是否有環形緩衝區實現?
- 18. 比較環形緩衝區的內容
- 19. C上的環形緩衝區
- 20. 爲什麼我的環形緩衝區/循環緩衝區在java打破?
- 21. 沒有優先級反轉的環形緩衝區
- 22. ALLOCATOR_PROPERTIES :: cBuffers中有多少緩衝區?
- 23. 在java圖形中使用緩衝區
- 24. 帶有多個緩衝區的WSASend()可能完成不完整?
- 25. 有多少頂點緩衝區太多?
- 26. Qt是否有循環緩衝區?
- 27. 問題有關C實現循環緩衝區的
- 28. 我們是否可以使用blockingqueue來實現循環緩衝區
- 29. 等待免費環形緩衝區
- 30. C基本環形緩衝區問題
請參見[.NET Framework 4中的併發集合](http://msdn.microsoft.com/zh-cn/vcsharp/gg274329)。 – Contango
請參閱[MSDN博客>> C#常見問題解答]阻止收集和生產者 - 消費者問題](http://blogs.msdn.com/b/csharpfaq/archive/2010/08/12/blocking-collection-and -the-生產者 - 消費者 - problem.aspx)。 – Contango