获得线程中的最小大小

时间:2013-01-03 15:55:23

标签: c++ multithreading scheduling scheduler

我正在尝试使用Multithreads实现一种新的调度技术。 这个想法是,每次从程序线程创建任务时,它应该搜索工作线程并处理线程中最不忙的线程。

你能否建议一些逻辑(或)想法如何在编程的角度动态地找到给定线程中最不忙的线程

我使用的是C ++编程语言。

2 个答案:

答案 0 :(得分:0)

我想你有一个可以在每个线程上完成工作的主力函数。您可以定义每次调用此函数时递增的线程局部变量。对于相应的线程,此变量将显示它已完成的工作量。

然后,程序线程将在将任务分派给选定的线程(具有最小工作计数器的线程)之前检查并比较这些值。

另一种方法是使用每个线程在空闲时间中花费的工作时间。在线程的主力函数的开始和结束之间考虑工作时间,而空闲时间是另一个(您可以在劳动力函数的开始和结束时测量所有这些)。

无论如何,这个想法是基本上每个工作线程都会测量它的占用量。这有点不精确,但更高级的解决方案基本上将涉及重新创建线程库/框架。

答案 1 :(得分:0)

最简单的解决方案是提取一系列任务。在每个线程的空闲循环中,检查该任务池。繁忙的线程不会经常闲置,因此不要经常检查任务池,并选择一些额外的任务。