非阻塞套接字轮询与阻塞套接字

5 sockets networking client-server blocking

我需要同时发送接收。
哪个选项会更好:

  • 1 个线程使用非阻塞套接字处理发送和接收

或者

  • 2个线程,其中一个处理阻塞recv() + 一个处理send()?

或者还有其他解决方案吗?

我预计最多有大约 50 个双向连接。这导致选项 #1 中有 50 个线程,选项 #2 中有 100 个线程。

mmm*_*mmm 0

您可以使用一个线程和两个非阻塞套接字,并使用 select() 来等待传入的输入和输出队列中的空间。

那么您就不需要轮询,因为 select() 会在不使用处理器时间的情况下阻塞。