代码之家  ›  专栏  ›  技术社区  ›  Vandana Chadha

c++socket编程:创建多个流

  •  0
  • Vandana Chadha  · 技术社区  · 7 年前

    我正在开发一个应用程序,在创建套接字后,可以在侦听器和调用器模式下启动多个流。现在,如果启动一个流,进程会挂起,因为该流正在等待数据。因此,我很清楚,我需要以异步类型的流程启动流,以便应用程序的其余部分继续工作。

    是否在以下位置启动流:

    • 单独的线程
    • 使用fork分离进程
    • 另外,请阅读有关select的内容,这是否有效
    • 阻塞/非阻塞套接字是否解决此问题。

    此应用程序正在c++中完成。

    1 回复  |  直到 7 年前
        1
  •  1
  •   John Zwinck    7 年前

    您可以使用Boost之类的库。Asio或C函数 poll() (或 select() 它的作用基本相同)一次等待多个套接字。无论哪种方式,您都希望“多路复用”套接字,这意味着您要阻塞,直到其中任何一个具有可用数据,然后从该套接字读取数据。这是构建的网络应用程序的数量,通常比每个连接都有一个线程或进程更高效、更具可扩展性、更不容易出错。