<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.30.3">
</HEAD>
<BODY>
Hi, all,<BR>
<BR>
最近遇到个问题, 需要设计类似cron里面时间定义的timer数据结构.<BR>
<BR>
以下是cron的定义<BR>
<BR>
[[[minute hour day_of_month month day_of_week]]] command<BR>
<BR>
我需要实现除了command之外的timer数据结构.<BR>
<BR>
我目前的想法是如下:<BR>
<BR>
<BR>
minute hour dayof_..... 每一项做二叉线段树 每个线段树存储不交叉的内容.<BR>
<BR>
如下(以minute为例):<BR>
<BR>
[12 ,19]<BR>
| | <BR>
[1,9] [30 , 38]<BR>
| |<BR>
[22,28] [40, 50]<BR>
|<BR>
52<BR>
<BR>
hour dayof ...... 依次类推<BR>
<BR>
做timer的时候, 计算最近的match点剩余的时间(XX秒).并返回.<BR>
<BR>
(做计算的时候反序 minute<-hour<-day_of_month<-month<-day_of_week 判断最近时间距离(秒为单位), 即 先判断day_of_week 最后判断minute)<BR>
<BR>
<BR>
一个 <BR>
<BR>
filter{<BR>
line_item m_h_dom_mon_dow[5]; //分别存 分钟 小时 日 月 星期中的日<BR>
}<BR>
<BR>
timer_DIY{<BR>
<BR>
filter accept[MAX_ACCEPT_SIZE]; //这个是线段树的数组, 可以有N个这样的线段树组成timer. 决策的时候遍历计算, 取最小值为下一次timer的触发时间.<BR>
<BR>
day array_deny[xx]; //这个是某些特殊的节假日等的filter <BR>
}<BR>
<BR>
<BR>
有谁做过这方面的数据结构嘛? 能分享下 我觉得我的很笨拙.. <BR>
<BR>
<BR>
谢谢<BR>
<BR>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
-- <BR>
Guannan Ma <<A HREF="mailto:mythmgn@gmail.com">mythmgn@gmail.com</A>><BR>
<BR>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>