问一个文件异步读取的问题,io_getevents拿到的ioevents->res<0

suds 2010-06-10 02:13:30
现在正在修改一个别人的代码以适应新的需求。
改代码中使用了文件的异步读取。
测试下来发现一个问题。
测试流程大体如下:
一个process以一定的速率(例如1Mbps)在写入文件,但是buffer的数据往disk的flush
时间较长(about 200ms+)
另一个process以一个较大的速率(例如1.5Mbps)下载该正在被写的文件,当然下载线程很
容易就追到文件尾部,这个时候下载部分会pause一段时间然后再去读取文件数据。

但是现在发现一个问题有的时候,一旦下载部分追到文件尾部,经过几次读取字节数为0的
尝试以后。发现从io_getevents拿到的(long)ioevent->res就小于0. 然后取得errno为
22(invalid parameter)。但是既然io_submit都成功了,为何会在io_getevents得到的结果
中出现(invalid parameter).
而从我的log种显示,调用io_submit的buffer指针以及相关数据都是正确的

请各位帮忙给点线索。
...全文
221 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧