这是一个情况。
来自客户端的多个 TCP 请求。请求负载变化。
当前服务器端线程池在程序初始化时实例化固定数量的线程。在线程池中动态生成/取消线程的好策略是什么?
这是一个情况。
来自客户端的多个 TCP 请求。请求负载变化。
当前服务器端线程池在程序初始化时实例化固定数量的线程。在线程池中动态生成/取消线程的好策略是什么?
毫无意义。你不需要更多的线程来做更多的工作。只需创建比您一次可以有用地做的事情数量多的线程,然后将其保留。
处理线程池的一种简单方法是拥有一个线程向量,并且每个线程都有一个std::function
对象队列。线程只是从其队列中弹出一个函数并执行它。
您不必生成/取消线程,因为它们已经在运行,在创建线程池时创建。虽然线程不做任何工作,但它们要么等待一个信号,告诉它队列中有函数,要么轮询队列并在其间休眠。