在单个上下文切换

时间:2015-08-28 17:37:49

标签: java linux sockets tcp zero-copy

我需要通过tcpip套接字有效地将相同的消息发送/扇出到主机列表。逻辑需要循环每个套接字以写出消息。如果此逻辑在linux用户模式下运行,则底层操作系统将调用系统调用的次数与主机数量相同。这很昂贵,因为每次系统调用都需要用户模式到内核模式上下文切换。

如果可以在采用主机列表(文件描述符)的系统调用中移动循环,效率会更高。这样的系统调用是否存在于linux中?

如果存在这样的系统调用,我们是否在Java中有一个等效的API(类似于Java中的transferTo()对应于linux中的sendfile())?

1 个答案:

答案 0 :(得分:1)

我记得,Java NIO支持零拷贝。看一下SocketChannel和FileChannel类。