Linux 異步IO
使
用Linux異步IO有兩種途徑:一是使用posix標準的庫函數,好處是移植性好;二是使用Linux系統調用,好處是穩定性能更高。Posix標準庫
函數以“aio_”打頭,如aio_read,而系統調用以“io_”打頭,如io_submit。具體的使用,請上Google或百度吧。
io_xxx是內核態AIO
aio_xxx是用戶態AIO
ps -ef看到的“[aio/0]”是內核線程,爲內核態AIO服務
的。實際上AIO就是在調用者和IO操作間加入了一個隊列。我們經常使用epoll/select等,常常將數據
收到後,放到一個消息隊列,然後交給其它線程處理
,這個實際上就是一個異步操作。
對於
內核態AIO
,如果文件
不是以
O_DIRECT
打開或創建的,則
io_submit
操作將不是異步的,而是阻塞式的,和普通的read/write類似。
用戶態AIO庫文件
:/usr/lib/librt
.so
內核態AIO庫文件
:/usr/lib/libaio
.so