c++中的线程池

Thread pooling in c++

本文关键字:线程 c++      更新时间:2023-10-16

我在一个线程池中有5个线程。如果我从一个用户那里得到10个请求,我将如何使用cpp处理每个线程的2个请求。我想动态处理请求。我的线程将保持不变,但请求可以是动态的,我还想显示线程执行的日志

线程池背后的理念是有固定数量的线程,当新的作业请求到来时,它将被分配给一个可用的线程。如果没有可用的线程(即所有线程都忙于处理其他作业(,则将作业请求添加到FIFO队列的末尾。每当线程处理完当前正在处理的作业请求时,它都会检查FIFO队列,看看作业请求是否在那里排队等待处理。如果FIFO中有作业请求,线程会将其从FIFO的头部弹出并处理;如果没有,线程将进入睡眠状态,直到出现下一个作业请求(此时,它或另一个线程将被线程池唤醒,以便可以处理新的作业请求(。

通过这种方式,可以使用有限数量的线程来处理任意数量的作业请求。