gpt4 book ai didi

c++ - 查找线程之间的最小队列大小

转载 作者:行者123 更新时间:2023-11-28 07:49:09 27 4
gpt4 key购买 nike

我正在尝试使用多线程实现一种新的调度技术。每个线程都有自己的私有(private)本地队列。这个想法是,每次从程序线程创建任务时,它应该在队列中搜索最小队列大小(任务数量较少的队列)并在其中排队。一种线程间负载平衡的方法,其中不太忙的队列排队较多。

能否请您提出一些逻辑(或)想法如何从编程的角度动态地在给定队列中找到最小大小的队列。

我正在研究 visual studio 2008,我们自己的多线程库中的 C++ 编程语言实现了多速率同步数据流范例。

最佳答案

如您所见,尝试找到负载较少的队列很麻烦,而且可能是一种低效的方法,因为您可能会向只有一个繁重任务的队列添加更多工作,而具有小任务的队列将没有更多的工作并很快变得不活跃。

您最好使用work-stealing 启发式方法:当一个线程完成自己的工作时,它会查看其他线程队列并“窃取”一些工作,而不是保持空闲或被终止。

然后系统将自动平衡每个线程处于事件状态,直到每个人都没有足够的工作。

你不应该有空闲线程和工作等待处理的情况。

关于c++ - 查找线程之间的最小队列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14215957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com