1

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

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

我正在使用 C++ 编程语言。

4

2 回答 2

0

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

然后,程序线程将检查并比较这些值,然后再将手头的任务分派给选定的线程(工作计数器最少的线程)。

另一种方法是衡量每个线程的工作时间/空闲时间。工作时间被认为是线程的主力函数的开始和结束之间,而空闲时间是另一个(你可以测量劳动力函数开始和结束时的所有时间)。

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

于 2013-01-03T16:02:23.620 回答
0

最简单的解决方案是创建一个待接任务池。在每个线程的空闲循环中,检查那个任务池。一个很忙的线程不会经常空闲,因此不要经常检查任务池,并接一些额外的任务。

于 2013-01-03T16:08:22.147 回答