我正在尝试使用多线程实现一种新的调度技术。 这个想法是,每次从程序线程创建任务时,它应该搜索工作线程并在线程中最不忙的线程上工作。
你能建议一些逻辑(或)想法如何在编程的角度动态地在给定的线程中找到最不忙的线程
我正在使用 C++ 编程语言。
最佳答案
我想您有一个在每个线程上完成工作的主力函数。您可以定义一个线程局部变量,每次调用此函数时该变量都会递增。对于相应的线程,此变量将显示它完成了多少工作。
然后,程序线程将检查并比较这些值,然后再将手头的任务分派(dispatch)给选定的线程(工作计数器最少的线程)。
另一种方法是使用每个线程的工作时间/空闲时间的度量。工作时间被认为是线程的主力函数开始和结束之间的时间,而空闲时间是另一个时间(您可以在劳动力函数的开始和结束时测量所有这些时间)。
无论如何,这个想法基本上是每个工作线程都会测量它占用了多少。这有点不精确,但更高级的解决方案基本上会涉及重新创建线程库/框架。
关于c++ - 获取线程中的最小大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142396/