0

我正在设计一个在组件层次结构的所有级别都需要计时器的系统。多个计时器可能同时处于活动状态,但它们需要相互交互(停止组件的计时器会停止其后代的计时器,而启动组件的计时器会启动其祖先的计时器并停止其兄弟的计时器)。

每个计时器都有不同的限制,并将向侦听器发送滴答、开始、停止和过期事件。

这仍处于设计阶段的早期(实现语言仍未确定),但我想避免线程混乱。有什么建议吗?

4

1 回答 1

2

很难根据您发布的内容提供建议。也许完全避免使用线程,并且只有一个计时器和事件数据库表。当计时器响起时,您选择所有比现在更早的事件并触发它们。然后选择现在减去事件表的最小时间戳并在该时间间隔内休眠。环形。

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);
}
于 2009-01-18T00:42:25.500 回答