我正在设计一个在组件层次结构的所有级别都需要计时器的系统。多个计时器可能同时处于活动状态,但它们需要相互交互(停止组件的计时器会停止其后代的计时器,而启动组件的计时器会启动其祖先的计时器并停止其兄弟计时器的计时器)。
每个定时器都有不同的限制,并且会向听众发送滴答,开始,停止和过期事件。
这仍处于设计阶段的早期阶段(实现语言尚未确定),但我想避免线程混乱。有什么建议吗?
答案 0 :(得分: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);
}