0
我想要實現在Unix的具有共享存儲器的一生產者,多消費者模型中的多個消費者模型
製片:把數據幀(〜炭[1024])中內存段
消費者:數據memcpy(複製)到自己的私有內存,並做一些處理同步在一個生產者+具有共享存儲器
一些相關信息:
- 這是正常的消費者錯過一些d ata框架
- 消費者是獨立的,例如。這沒關係,如果一個消費者只得到數據1,2,4,而另一個得到2,3,5
- 關於10消費者會在同一時間運行
- 生產者可以快於消費者可處理生成的數據
- 慢速/殭屍消費者不應拖慢整個系統
- 消費者將跳過的memcpy如果看到同樣的數據
我已經設置了共享內存的東西,並使用並行線程讀寫鎖,但它似乎比使用TCP模式要慢
我的問題:哪種同步最適合這種模式?
你是指「錯過某個數據框?」一個消費者獲得1,2,4和另一個消費者獲得2,3,5的確切程度如何?你不介意2次被處理兩次嗎? – aib 2011-03-12 22:56:28
我不認爲這是同步問題。 (好吧,但解決方案很少,很簡單。)這裏面臨的更大問題是調度。 – aib 2011-03-12 22:57:34
我不確定您是否可以使用.NET庫,但是您需要類似[ReaderWriterLockSlim](http://msdn.microsoft.com/zh-cn/library/system.threading.readerwriterlockslim.aspx) 和[相關問題](http://stackoverflow.com/questions/5188475/is-readerwriterlockslim-the-right-coice/5188627#5188627) – 2011-03-12 23:02:40