作者lalaboom (lalaboom)
看板LinuxDev
标题[问题] pipe buffer大小
时间Tue Mar 24 23:02:29 2015
大家好
我有一只程式会一直产生资料,
透过pipe write写到另一只程式去,
但是另一只call pipe read 的速度比较慢,
导致write端会block住 (goole查询buffer大小为4K?),
有嚐试 write end 设成 nonblock,
但也只是return -1(try again)给我,
因为资料会一直产生,但因为上述原因导致丢资料,
请问我该如何设计呢?
改成FIFO会有帮助吗?
谢谢 ~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.16.209
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1427209352.A.170.html
1F:推 asilzheng: 先解决 read 的速度问题吧,为什麽他比较慢是可接受的? 03/24 23:38
2F:→ lalaboom: 因为需要计算复杂的东西,基本上read端速率无法更改XD 03/25 00:15
3F:→ james732: read端不能先把资料收下来再算吗? 03/25 11:39
4F:→ lalaboom: 因为read end code不能改,只能在write end想办法 03/25 12:53
5F:→ jaw109: 如果真的来不及那就只能把资料读出来丢掉 03/25 20:42
6F:→ leolarrel: write 端的程式要有"水库"的概念,把来不及的送的东西 03/27 15:29
7F:→ leolarrel: 暂放起来 03/27 15:29
8F:→ leolarrel: write端程式写两个程序或执行绪,一个专门储存资料,一个 03/27 15:32
9F:→ leolarrel: 专门把资料往管线丢.这概念十分简单,最明显的例子就是 03/27 15:33
10F:→ leolarrel: youtube的播放进度条 03/27 15:35
11F:→ lalaboom: 谢谢Leo大,目前正是采取这种做法,但也因为muti thread 03/29 02:06
12F:→ lalaboom: 产生的问题需要把两端lock起来,所以效率有些降低 03/29 02:06