在多线程中调度任务

Scheduling tasks in multithreads

本文关键字:任务 调度 多线程      更新时间:2023-10-16

我正在尝试在多线程系统中安排任务。 我的想法是每个线程都有一个本地队列,每个线程将从其本地队列中获取作业。但是当线程达到某个阈值时,它不应该获取作业,而是应该将作业转移到低于阈值级别的线程。

我的疑问是如何为线程设置阈值。

此问题的另一种安排是让已完成队列的线程能够从其他人的队列中获取工作。这更广为人知的是"工作窃取",是一种众所周知的调度算法,例如

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.8905

您使用的是什么线程库?

我在我所有的线程项目中都使用两个OSS库TBB和Cilk Plus。 这些更高级别运行时提供的一项功能是,它们以有效利用处理器资源的方式自动将任务调度到线程上。 运行时在负载平衡许多任务方面也非常有效。

www.threadingbuildblocks.org

www.cilkplus.org