我是c ++的新手,对c ++多线程有一定的了解。我最初有10个线程,并且我根据添加到多个映射的任务数量增加了线程数。我能够增加线程数,但如果任务数量减少,则无法终止线程。我想杀死等待超过2分钟的线程并根据任务减少线程数。谁可以帮我这个事 ??。请耐心等待我,因为我是c ++的新手,如果已经提出这个问题。提前致谢。
一个简单的解决方案是创造一个“死亡的工作”。当你的经理想要缩小游泳池的大小时,它只是排队“死亡的工作”。当一个线程获得一个工作时,它会检查它是否是“死亡工作”,如果是,则彻底终止。
您可以通过同时保护作业队列的相同互斥锁保护活动线程计数和所需线程计数来执行相同操作。要终止线程,请减少所需的线程数并唤醒至少一个线程。线程唤醒时,在执行作业之前,检查实际线程数是否高于所需数量,如果是,则减少实际线程数并终止线程。
有多种解决方案可能: