从单线程读取多个套接字[低延迟]

问题描述 投票:0回答:1

作为网络客户端,我想跟踪两个 TCP 连接的输入。两台服务器每秒发送几个数据包。与可用带宽相比,每个数据包的大小都很小。

理想情况下,我们希望从单个线程读取两个套接字以获得最佳延迟。我最初的计划是在循环中的每个连接上使用 ioctl(2) 中的

FIONREAD
,并且仅在数据可用时读取。还有其他选择吗? CPU 消耗与低延迟相比不太重要。

c unix tcpclient low-latency single-threaded
1个回答
0
投票

您想要使用以下 I/O 多路复用原语之一:

  • select()
    ; “在 Linux [...] 上,在不应阻塞的套接字上使用 O_NONBLOCK 可能更安全”
  • poll()
  • epoll()
    (Linux)
  • uring(Linux)
© www.soinside.com 2019 - 2024. All rights reserved.