在我当前的项目中,我有一个这样的结构:
Main Thread (GUI):
->Parser Thread
->Healer Thread
->Scripts Thread
问题是治疗师&脚本线程必须创建带有相应计时器的子线程,它看起来像这样:
->Parser Thread
->Healer Thread:
-->Healer 1
-->Healer 2
--> (...)
->Scripts Thread:
-->Script 1
--> (...)
为此,我考虑过编写一个动态计时器,该计时器将在运行时添加新的Heal/Script时创建。
现在问题是:也许我有像20个定时器在同一时间运行,因为这不会是一个问题,我的程序性能(CPU消耗等)?这是实现我所追求的最好方式吗?
Thanks in advance
在一个应用程序中同时激活多达20个计时器是没有问题的。现代硬件完全有能力处理这个问题。
还请记住,计时器消息是低优先级消息,因此只有在消息队列为空时才会合成。因此,您需要及时地为线程的消息队列提供服务,以便及时地传递消息。
一个更大的问题是,你不能在GUI/VCL线程之外创建TTimer
实例。这是因为定时器组件调用AllocateHWnd
不是线程安全的,只能从GUI/VCL线程调用。因此,您需要直接与原始的Win32计时器API交互,而不是使用VCL TTimer
包装器。