数据方向是:
A -> fifo1 -> B
A <- fifo2 <- B
A打开fifo2,用于读取,但先不读。
B打开fifo1,等着读取,
A打开fifo1,向fifo1写入数据,
B读到数据后,立即打开fifo2,将回应数据写入fifio2;
A用async_read_until( )去fifo2读回应数据,发现第一次读取时大概率出现错误asio:misc:2(end of stream),此时用cat看一下fifo2的内容,就是回应数据。
难道是因为A试图读取fifo2时,B还没打开fifo2并写入回应数据?按说不应该有这个同步问题。
B读取fifo1也是用async_read_until( ),打印了一下,也是这个问题。
看来结论是:
没人向fifo里写入数据时,读的一方用async_read_until( )会一直是错误码asio:misc:2(end of stream),要反复“sleep一下再重试”。
--
修改:z16166 FROM 221.218.163.*
FROM 221.218.163.*