c++ - 获取线程中的最小大小

标签 c++ multithreading scheduling scheduler

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

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

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

最佳答案

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

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

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

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

关于c++ - 获取线程中的最小大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142396/

相关文章:

batch-file - 如何每两周安排一个批处理脚本文件?

c++ - 将 short int[] 转换为 char*

c++ - DVD 或 CD 播放器?

c++ - 什么时候内存分配给 C++ 中的静态变量

multithreading - 使用 fortran dll 的线程安全 C# 服务

java - 用Java绘制的实时系统的简单执行序列

C++ Win32 改变静态颜色

c++ - 在使用 stop_token 等待条件变量_any 时是否需要拥有锁来请求停止?

c# - 在 C# 中将 'using' 与线程实用程序一起使用 - 何时调用 Dispose?

Spring3 的 @Transactional @Scheduled 未提交给数据库?