我正在尝试在多线程系统中安排任务。我的想法是每个线程都有一个本地队列,每个线程将从其本地队列中获取作业。但是当线程达到某个阈值时,它不应该获取作业,而是应该将作业转移到低于阈值级别的线程。
我的疑问是如何设置线程的阈值。
我正在尝试在多线程系统中安排任务。我的想法是每个线程都有一个本地队列,每个线程将从其本地队列中获取作业。但是当线程达到某个阈值时,它不应该获取作业,而是应该将作业转移到低于阈值级别的线程。
我的疑问是如何设置线程的阈值。
这个问题的另一种安排是让已经完成队列的线程能够从其他队列中获取工作。这更好地称为“工作窃取”,并且是众所周知的调度算法,例如
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.8905
您使用的是什么线程库?
我在所有线程项目 TBB 和 Cilk Plus 中使用了两个 OSS 库。这些更高级别的运行时提供的一个特性是它们以一种有效利用处理器资源的方式自动将任务调度到线程上。运行时在负载平衡许多任务方面也非常有效。
www.threadingbuildblocks.org
www.cilkplus.org