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

delphi – 如何监控OmniThreadLibrary中的管道阶段?

发布时间:2020-12-15 09:25:58 所属栏目:大数据 来源:网络整理
导读:是否有可能以某种方式监控管道任务?我试图像这样为每个任务添加监视器 FPipeline := Parallel.Pipeline() .Stage(StageWorker1,Parallel.TaskConfig.MonitorWith(MyMonitor)) .NumTasks(MaxReadThreadCount) .Stage(StageWorker2,Parallel.TaskConfig.Monit
是否有可能以某种方式监控管道任务?我试图像这样为每个任务添加监视器

FPipeline := Parallel.Pipeline()
  .Stage(StageWorker1,Parallel.TaskConfig.MonitorWith(MyMonitor))
     .NumTasks(MaxReadThreadCount)
  .Stage(StageWorker2,Parallel.TaskConfig.MonitorWith(MyMonitor))
  .Run();

但获得异常“任务只能用一个监视器监视”(据我所知,这是因为已经为管道阶段安装了内部隐藏监视器).

解决方法

使用Parallel.TaskConfig.OnMessage并提供通用的消息处理功能.

FPipeline := Parallel.Pipeline()
  .Stage(StageWorker1,Parallel.TaskConfig.OnMessage(MessageProc))
     .NumTasks(MaxReadThreadCount)
  .Stage(StageWorker2,Parallel.TaskConfig.OnMessage(MessageProc))
  .Run();

procedure MessageProc(var msg: TOmniMessage);
begin
  ...
end;

MessageProc可以是正常的过程或方法.

(编辑:李大同)

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

    推荐文章
      热点阅读