我正在设计一个在组件层次结构的所有级别都需要计时器的系统。多个计时器可能同时处于活动状态,但它们需要相互交互(停止组件的计时器会停止其后代的计时器,而启动组件的计时器会启动其祖先的计时器并停止其兄弟的计时器)。
每个计时器都有不同的限制,并将向侦听器发送滴答、开始、停止和过期事件。
这仍处于设计阶段的早期(实现语言仍未确定),但我想避免线程混乱。有什么建议吗?
我正在设计一个在组件层次结构的所有级别都需要计时器的系统。多个计时器可能同时处于活动状态,但它们需要相互交互(停止组件的计时器会停止其后代的计时器,而启动组件的计时器会启动其祖先的计时器并停止其兄弟的计时器)。
每个计时器都有不同的限制,并将向侦听器发送滴答、开始、停止和过期事件。
这仍处于设计阶段的早期(实现语言仍未确定),但我想避免线程混乱。有什么建议吗?
很难根据您发布的内容提供建议。也许完全避免使用线程,并且只有一个计时器和事件数据库表。当计时器响起时,您选择所有比现在更早的事件并触发它们。然后选择现在减去事件表的最小时间戳并在该时间间隔内休眠。环形。
while (1) {
SELECT * FROM EVENTS WHERE ev_time < now() order by ev_time;
while (num_rows_selected > 0) {
for (i = 0; i < num_rows_select; ++i) {
fetch row
process row
}
SELECT * FROM EVENTS WHERE ev_time < now() order by ev_time;
}
SELECT MIN(ev_time)-NOW() as Interval FROM EVENTS
sleep(Interval);
}