Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Linux下的AIO网络套接字和零拷贝_C_Linux_Aio - Fatal编程技术网

C Linux下的AIO网络套接字和零拷贝

C Linux下的AIO网络套接字和零拷贝,c,linux,aio,C,Linux,Aio,我一直在试验异步Linux网络套接字(aio_read等人,在aio.h/librt中),我一直在试图找出它们是否为零拷贝。到目前为止,我读到的大部分内容都讨论了文件i/O,而我感兴趣的是它的网络i/O AIO使用起来有点麻烦,我怀疑它是不可移植的,所以我想知道是否值得坚持使用它。零拷贝几乎是它相对于(非阻塞)select/epoll的唯一优势(我认为这是一个主要优势)。在GLIBC中,AIO是使用POSIX线程和常规的pread-调用实现的。因此,它可能比select或epoll和自己做rea

我一直在试验异步Linux网络套接字(aio_read等人,在aio.h/librt中),我一直在试图找出它们是否为零拷贝。到目前为止,我读到的大部分内容都讨论了文件i/O,而我感兴趣的是它的网络i/O


AIO使用起来有点麻烦,我怀疑它是不可移植的,所以我想知道是否值得坚持使用它。零拷贝几乎是它相对于(非阻塞)select/epoll的唯一优势(我认为这是一个主要优势)。在GLIBC中,AIO是使用POSIX线程和常规的
pread
-调用实现的。因此,它可能比
select
epoll
和自己做
read
recv
更昂贵。

AIO似乎是POSIX.1-2001的一部分,所以它应该是可移植的。POSIX/glibc AIO(
-lrt
AIO.*
函数)和Linux AIO(
-laio
带有
io.
函数)这是两件不同的事情。前者是便携式的,但后者不是。请看。尽管我认为在当前的硬件(以及一些奇特的分页技巧)中,在内核调用的memcopy带宽出现之前,网速就成了瓶颈,这有点令人惊讶。。