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

Delphi:线程作业的线程列表 – 排队

发布时间:2020-12-15 09:37:33 所属栏目:大数据 来源:网络整理
导读:我有一些基于TThreads的操作.现在我需要创建包含要完成的作业列表的线程,然后在前一个完成后立即触发每个…我应该如何编写它?我不能允许线程同时运行,因为可能有超过10 000个操作要完成. 很难找到TEvent和其他同步对象的文档示例…… 希望我能在这里找到一
我有一些基于TThreads的操作.现在我需要创建包含要完成的作业列表的线程,然后在前一个完成后立即触发每个…我应该如何编写它?我不能允许线程同时运行,因为可能有超过10 000个操作要完成.
很难找到TEvent和其他同步对象的文档示例……
希望我能在这里找到一些帮助……

提前致谢,
米哈尔

解决方法

不要将操作建立在线程上.这是错误的设计.相反,您应该为您的操作创建一个基类,它公开了一个执行操作的方法.编写后代类来实现具体操作.不要对线程上下文做任何假设,总是使用关键部分或类似的同步对象来保护对共享资源的访问.更重要的是,尽量避免使用共享资源,或者至少尝试将共享资源设置为只读,这样就不需要锁定.

通过该设计,可以通过直接调用操作方法来执行VCL线程中的每个操作,使用TThread后代类在其自己的线程中执行操作(您现在看起来像这样),或者安排所有操作线程池上的操作.可以在运行时调整池中的线程数,以匹配操作的性质(处理器绑定或I / O绑定)和系统具有的处理器核心数.并回答您的问题:甚至可以通过强制池使用单个线程来完全序列化操作.基本上,您可以完全改变操作的执行方式而不需要更改它们.

(编辑:李大同)

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

    推荐文章
      热点阅读