2017-07-16 61 views
0

在aio_read中,我們使用aiocb結構上的aio_error函數來檢查操作是否完成。對我來說,它看起來像輪詢一樣,然後檢查EWOULDBLOCK作爲返回值。aio_read和read/EWOULDBLOCK有什麼區別?

+0

'aiocb'也有'aio_sigevent'字段,可以用於回調,所以不需要'aio_error'輪詢。 – j123b567

+2

如果您在'aio_read'之後調用'aio_error',那麼使用異步io顯然沒有意義。其實你應該提供一些示例代碼來澄清。 – VTT

回答

2

我們在aiocb結構體上使用aio_error函數來檢查操作是否完成。

不,我們不這樣做。我們用它來檢查它是否完成了的錯誤。

對我來說,似乎輪詢和讀取相同,然後檢查EWOULDBLOCK作爲返回值。

否。如果操作未完成,有或沒有錯誤,它將異步繼續。 EWOULDBLOCK表示操作已完成並且未傳輸任何數據。

你當然應該「輪詢」使用異步I/O時:你應該只允許完成處理程序運行,並有檢查什麼結果。