问一个文件异步读取的问题,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指针以及相关数据都是正确的
请各位帮忙给点线索。