【问题标题】:C++ server recieving too many request, i want to accept some number of request at a timeC++ 服务器收到太多请求,我想一次接受一些请求
【发布时间】:2014-03-06 16:52:46
【问题描述】:

我用 C++ 开发了一个服务器,一次接收多个请求,我想一次处理几个请求,先说 5 个请求,然后是下一个 5 个请求等等,以减轻我服务器的负担,谁能帮助我如何限制请求?

【问题讨论】:

  • 您好,欢迎来到StackOverflow。请花点时间阅读the help page,尤其是名为"What topics can I ask about here?""What types of questions should I avoid asking?" 的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解SSCCE 是什么。
  • 没有代码示例,你的问题太模糊了。问题描述和你自己已经尝试过的描述。至于起点......使用固定数量的线程(谷歌:线程,生产者 - 消费者)处理您的请求。
  • 当您知道您的想法时,您很容易认为您已经很好地描述了它,但实际上缺少大量细节。最明显的是,您是在谈论 TCP、UDP、MQ 还是其他某种请求方式?如果 TCP - 每个连接是否有 1 个瞬时连接,或者连接是否在多个请求中保持活动状态?如果是前者,在您准备好处理它们之前不接受客户端连接是否可以,或者您是否想尽快接受?是否让流控制防止客户端在处理之前发送过多的请求和缓冲区是否重要?
  • 我目前没有代码,但情况是,请求数量以多线程的形式发送到服务器,我的问题是:我的代码从堆中分配一些缓冲区并执行一些操作在该缓冲区上然后解除分配它,问题是在我解除分配其他请求的现有缓冲区编号之前分配缓冲区,因此我的堆大小急剧上升,所以我想一次处理很少的请求,计数信号量会有帮助吗?我希望你现在解决问题了。
  • 您可能想要使用一些 HTTP 服务器库,例如 libonionwt

标签: c++ linux multithreading


【解决方案1】:

你需要一个队列。
将所有请求存储在队列中,并以您想要的任何速度进行处理。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2016-12-25
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多