我一直在嘗試異步Linux網絡套接字(aio.hread等人在aio.h/librt中),我一直試圖找出的一件事是它們是否爲零拷貝或不。到目前爲止,我讀過的所有內容都討論了文件I/O,而我對它的網絡I/O感興趣。AIO網絡套接字和Linux下的零拷貝
AIO使用起來有點痛苦,我懷疑它是不可移植的,所以想知道它是否值得堅持下去。零拷貝只是唯一的優勢(albiet是我的目的主要的)它會有(非阻塞)select/epoll ..
我一直在嘗試異步Linux網絡套接字(aio.hread等人在aio.h/librt中),我一直試圖找出的一件事是它們是否爲零拷貝或不。到目前爲止,我讀過的所有內容都討論了文件I/O,而我對它的網絡I/O感興趣。AIO網絡套接字和Linux下的零拷貝
AIO使用起來有點痛苦,我懷疑它是不可移植的,所以想知道它是否值得堅持下去。零拷貝只是唯一的優勢(albiet是我的目的主要的)它會有(非阻塞)select/epoll ..
在GLIBC中,AIO使用POSIX線程和常規的pread
實現 - 呼叫。所以它可能比select
或epoll
更貴,並且自己做read
或recv
。
有點令人驚訝的是,儘管我想用當前的硬件(以及一些花哨的尋呼技巧?)線速度成爲內核調用的memcopy-bandwidth之前的瓶頸。 – Remy 2010-06-08 18:10:43
AIO似乎是POSIX.1-2001的一部分,所以它應該是便攜式的。 – 2010-06-05 21:56:47
POSIX/glibc AIO('-lrt'和'aio_ *'函數)和Linux AIO(具有'io_ *'函數的'-laio')是兩個不同的東西。前者是便攜式的,但後者不是。請參閱[Google的AIO用戶指南](http://code.google.com/p/kernel/wiki/AIOUserGuide)。 – 2013-03-10 01:29:24