我正在开发一个应用程序,在创建套接字后以监听器和调用者模式启动多个流。现在,如果我启动一个流,进程就会挂起,因为流正在等待数据。所以我很清楚,我需要在异步进程中启动流,以便应用程序的其余部分继续工作。
我是否开始直播:
- 独立线程
- 使用fork分离进程
- 还阅读了有关 select 的内容,它会起作用吗
- 阻塞/非阻塞套接字是否解决了这个问题。
此应用程序是用 C++ 完成的。
最佳答案
您可以使用像 Boost.Asio 这样的库或 C 函数 poll()
(或做基本相同事情的 select()
)来等待多个 socket 一次。无论哪种方式,您都希望“多路复用”套接字,这意味着您阻塞直到其中任何一个有可用数据,然后您从那个套接字中读取。这是构建了多少网络应用程序,并且通常比为每个连接使用一个线程或进程更高效、更可扩展且更不容易出错。
关于C++套接字编程: creating multiple streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50302582/