[问题] pipe buffer大小

楼主: lalaboom (lalaboom)   2015-03-24 23:02:29
大家好
我有一只程式会一直产生资料,
透过pipe write写到另一只程式去,
但是另一只call pipe read 的速度比较慢,
导致write端会block住 (goole查询buffer大小为4K?),
有尝试 write end 设成 nonblock,
但也只是return -1(try again)给我,
因为资料会一直产生,但因为上述原因导致丢资料,
请问我该如何设计呢?
改成FIFO会有帮助吗?
谢谢 ~
作者: asilzheng (asil)   2015-03-24 23:38:00
先解决 read 的速度问题吧,为什么他比较慢是可接受的?
楼主: lalaboom (lalaboom)   2015-03-25 00:15:00
因为需要计算复杂的东西,基本上read端速率无法更改XD
作者: james732 (好人超)   2015-03-25 11:39:00
read端不能先把资料收下来再算吗?
楼主: lalaboom (lalaboom)   2015-03-25 12:53:00
因为read end code不能改,只能在write end想办法
作者: jaw109   2015-03-25 20:42:00
如果真的来不及那就只能把资料读出来丢掉
作者: leolarrel (真.粽子无双)   2015-03-27 15:29:00
write 端的程式要有"水库"的概念,把来不及的送的东西暂放起来write端程式写两个程序或执行绪,一个专门储存资料,一个专门把资料往管线丢.这概念十分简单,最明显的例子就是youtube的播放进度条
楼主: lalaboom (lalaboom)   2015-03-29 02:06:00
谢谢Leo大,目前正是采取这种做法,但也因为muti thread产生的问题需要把两端lock起来,所以效率有些降低

Links booklink

Contact Us: admin [ a t ] ucptt.com