我写了一些数据到管道 - 可能是很多数据和随机间隔。如何从管道读取数据?多线程:读取/写入管道
这是确定:
-
在主线程
- (当前进程)创建两个以上线程(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