加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – OmnithreadLibrary是否支持“偷工作”?

发布时间:2020-12-15 09:29:53 所属栏目:大数据 来源:网络整理
导读:例如,工作窃取在 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
例如,工作窃取在 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 / Await将从计算池中执行另一个任务并执行它.当这个新任务完成后,它将再次检查子计算是否已完成其工作,如果不是,它将处理下一个子任务.

该机制在OmniThreadLibrary wiki上进一步描述.

编辑

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读