gpt4 book ai didi

multithreading - 使用 libev 的多线程套接字服务器

转载 作者:行者123 更新时间:2023-12-02 03:40:34 27 4
gpt4 key购买 nike

我正在实现一个套接字服务器。所有客户端(最多 10k)都应该保持连接。

这是我目前的设计:

  1. 主线程创建一个事件循环(默认使用 epoll)和一个接受客户端的观察者。
  2. 接受回调
    • 接受fd并将其设置为非阻塞模式。
    • 为 fd 添加 watcher 以监视读取事件。
  3. 读取回调
    • 读取数据并向线程池添加任务以发送响应。

是否可以将读取部分移至线程池,或者其他更好的主意?谢谢。

最佳答案

很难说。您不希望 10k 线程在后台运行。您应该将读取的部分保留在主线程中。这样,如果突然间所有客户端都开始请求东西,您只需将这些资源堆放在线程池队列中(您最终不会同时运行 10k 个线程)。此外,您可能会通过这种方式获得更好的性能,因为您可以避免进行一些不必要的上下文切换(在您自己的线程之间)。

另一方面,如果您的客户端不太可能同时发送请求,或者如果回复非常简单,那么每个客户端只有一个线程可能会更简单,并避免主线程和主线程之间的上下文切换线程池。

关于multithreading - 使用 libev 的多线程套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20330907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com