gpt4 book ai didi

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

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

我有一些基于 TThreads 的操作。现在我需要创建包含要完成的作业列表的线程,然后在前一个完成后立即触发每个线程...我应该如何编写它?我不能允许线程同时运行,因为可能有超过 10 000 个操作需要完成。很难找到 TEvent 和其他同步对象的文档示例......希望我能在这里找到一些帮助......

提前致谢,米哈尔

最佳答案

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

有了这样的设计,就可以通过直接调用操作方法来在 VCL 线程中执行每个操作,使用 TThread 后代类在它自己的线程中执行操作(您可以在 VCL 线程中执行每个操作)。现在似乎已经有了),或者调度线程池上的所有操作。池中的线程数量可以在运行时进行调整,以匹配操作的性质(处理器限制或 I/O 限制)和系统拥有的处理器核心数量。并回答您的问题:甚至可以通过强制池使用单个线程来完全序列化操作。基本上,您可以完全改变操作的执行方式,而无需更改操作

关于Delphi:线程作业的线程列表 - 排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805633/

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