2010-06-04 69 views
6

我一直在嘗試異步Linux網絡套接字(aio.hread等人在aio.h/librt中),我一直試圖找出的一件事是它們是否爲零拷貝或不。到目前爲止,我讀過的所有內容都討論了文件I/O,而我對它的網絡I/O感興趣。AIO網絡套接字和Linux下的零拷貝

AIO使用起來有點痛苦,我懷疑它是不可移植的,所以想知道它是否值得堅持下去。零拷貝只是唯一的優勢(albiet是我的目的主要的)它會有(非阻塞)select/epoll ..

+0

AIO似乎是POSIX.1-2001的一部分,所以它應該是便攜式的。 – 2010-06-05 21:56:47

+0

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

回答

2

在GLIBC中,AIO使用POSIX線程和常規的pread實現 - 呼叫。所以它可能比selectepoll更貴,並且自己做readrecv

+0

有點令人驚訝的是,儘管我想用當前的硬件(以及一些花哨的尋呼技巧?)線速度成爲內核調用的memcopy-bandwidth之前的瓶頸。 – Remy 2010-06-08 18:10:43