我寫了一些數據到管道 - 可能是很多數據和隨機間隔。如何從管道讀取數據?多線程:讀取/寫入管道
這是確定:
-
在主線程
- (當前進程)創建兩個以上線程(2,3)
- 第二線程有時寫入管道(和flush-ES管道? )
- 第三線程具有無限循環讀取管道(然後睡了一段時間)
這是到目前爲止,正確嗎?
現在,有一些事情我不明白:
- 我必須鎖(互斥?)上寫管道?
- IIRC,當寫入管道及其緩衝區已滿時,寫入結束會阻塞,直到我讀取已寫入的數據,對吧?如何檢查管道中的讀取數據,不要太頻繁,不要太少?所以第二個線程不會阻止?有沒有像
select
管道? - 可以將管道設置爲無緩衝區,或者我必須定期刷新它 - 哪一個更好?
- 我應該多創建一個線程,只是爲了在寫入後刷新管道?因爲沖洗塊,以及緩衝區已滿,對吧?我只是不想在第一和第二線程阻塞....
[編輯] 對不起,我想這個問題是平臺無關,但以防萬一:我是從Win32的角度看這個可能MinGW的ç...
這些都是很好的問題。如果你將自己的問題分解出來並提供你正在考慮的方法的代碼片段,你會得到更好的迴應。另外,你沒有提到有關語言或平臺的任何信息。 – 2009-11-11 03:28:58
同意凱利。我們需要更多的信息。所有這些問題都可以有平臺和語言特定的答案。另外,您打算用於「管道」的數據結構將是有用的信息。 – 2009-11-11 23:31:57
哦,對不起,我認爲平臺並不那麼重要,因爲我認爲這個問題與技術有關。但我只是更新了這個問題,謝謝你的建議。什麼樣的數據結構,只有緩衝區,這只是一個數組...。 – 2009-11-12 00:09:36