【问题标题】:Async Socket IO异步套接字 IO
【发布时间】:2014-03-24 08:53:51
【问题描述】:

为了刷新和扩展我的 C++ 知识,我正在尝试实现一个 fcgi 应用程序并自己实现 fcgi 接口。但是,我没有使用套接字的经验。研究将我带到了 Boost.asio,但由于我缺乏套接字知识,我发现很难通过教程使用该库,这些教程有时只是代码示例,当你不知道你在寻找什么时浏览 apireference 是困难。

问题:

  1. 您会推荐哪本教程(除了即将推出的 boost.asio 之外)/书来阅读套接字/异步 IO?
  2. 对于 fcgi,我很难理解 AsyncIO 的好处,必须先对标头进行解码,然后才能接收数据,如何通过异步 I/O 获得好处?
  3. 是否有一些启发式方法可以知道哪些参数(线程数、每个线程的套接字、套接字多路复用(是(多少连接?)/否、异步 IO、缓冲区大小)为 fcgi 接口产生最佳性能?

【问题讨论】:

  • 您有一个平台吗?还是必须完全与平台无关?
  • 查看0mq guide,了解使用套接字时的危险和解决方案。您甚至可能会发现 zeromq 很容易上手。
  • @DmitryLedentsov 好建议,这是我从头开始找工作的方式。我猜这取决于他想学什么。

标签: c++ sockets asynchronous


【解决方案1】:

我会在套接字上推荐(免费)BeeJs networking guide 或(付费)W Richard Stevens book

AIO(在这种情况下)是一种多路复用多个连接的方法。如果您没有多个连接,您将看不到任何好处。这也是完成这项任务最快但最难的方法。这个想法是,任何个人对连接的读取或写入都可能需要时间来等待资源可用。 AIO 允许您的应用程序在等待这些资源时转移到另一个连接和服务。简而言之,您的应用在多个连接上花费了更多的时间和更少的等待时间。

没有。这取决于您的架构和您的预期负载。真正聪明的网络服务器会根据配置和测量的使用情况调整所有这些。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2017-03-04
    • 1970-01-01
    • 2023-03-11
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多