我正在尝试使用多线程实现一种新的调度技术。这个想法是,每次从程序线程创建任务时,它应该搜索工作线程并在线程中最不忙的线程上工作。
您能否建议一些逻辑(或)想法如何从编程的角度动态地在给定线程中找到最不忙的线程
我正在使用 C++ 编程语言。
我正在尝试使用多线程实现一种新的调度技术。这个想法是,每次从程序线程创建任务时,它应该搜索工作线程并在线程中最不忙的线程上工作。
您能否建议一些逻辑(或)想法如何从编程的角度动态地在给定线程中找到最不忙的线程
我正在使用 C++ 编程语言。
我想你有一个主力函数可以在每个线程上完成这项工作。您可以定义一个线程局部变量,每次调用此函数时递增该变量。对于相应的线程,该变量将显示它完成了多少工作。
然后,程序线程将检查并比较这些值,然后再将手头的任务分派给选定的线程(工作计数器最少的线程)。
另一种方法是衡量每个线程的工作时间/空闲时间。工作时间被认为是线程的主力函数的开始和结束之间,而空闲时间是另一个(你可以测量劳动力函数开始和结束时的所有时间)。
无论如何,这个想法是基本上每个工作线程都会测量它的占用量。这有点不精确,但更高级的解决方案基本上将涉及重新创建线程库/框架。
最简单的解决方案是创建一个待接任务池。在每个线程的空闲循环中,检查那个任务池。一个很忙的线程不会经常空闲,因此不要经常检查任务池,并接一些额外的任务。