gpt4 book ai didi

delphi - OmnithreadLibrary 是否支持 "work stealing"?

转载 作者:行者123 更新时间:2023-12-03 15:10:24 24 4
gpt4 key购买 nike

例如,工作窃取可在 Java 平台上的 Fork/Join 框架中使用。 (参见 How is the fork/join framework better than a thread pool? )- OmniThreadLibrary 是否可以实现类似的功能?

<小时/>

Work stealing: worker threads that run out of things to do can steal tasks from other threads that are still busy.

最佳答案

我不知道我是否会称这种技术为“工作窃取”,但事实上 OmniThreadLibrary 在执行 Fork/Join 抽象时会让所有核心保持忙碌。

当您使用 Fork/Join 时,您可以通过调用 Compute 将任务发送到计算池中。当您调用 Value 获取子计算结果或调用 Await 等待子计算完成且子计算尚未完成其工作时,Value code>/Await 将从计算池中取出另一个任务并执行它。当这个新任务完成时,它会再次检查子计算是否完成其工作,如果没有,则处理下一个子任务。

此机制在 OmniThreadLibrary wiki 中有进一步描述。 .

<小时/>

编辑

我认为 Fork/Join 方法不应该被称为“工作窃取”。在 OmniThreadLibrary 实现中,工作项永远不会分配给线程,直到线程开始执行它。一旦线程开始执行它,没有人可以窃取它,因为这样做没有任何目的。

关于delphi - OmnithreadLibrary 是否支持 "work stealing"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366454/

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