//------------------------------------------------------------------------- // 根据时间,执行时间事件 public void processTimer(ulong jeffies) { EbDoubleLinkList <EbTimeEvent> excute_time = new EbDoubleLinkList <EbTimeEvent>(); { while (jeffies >= mTimeJeffies) { ulong index = mTimeJeffies & MAX_WHEEL_MASK; if (index == 0 && _cascadeTimer(mWheel2, 0) == 0 && _cascadeTimer(mWheel3, 1) == 0 && _cascadeTimer(mWheel4, 2) == 0) { _cascadeTimer(mWheel5, 3); } mTimeJeffies++; excute_time.addTailList(mWheel1.getSpoke((int)index)); } } EbDoubleLinkNode <EbTimeEvent> head, curr, next; head = excute_time.head(); curr = head.next; while (curr != head) { next = curr.next; _delTimer(curr); // 调用委托 if (curr.mObject.onTime != null) { curr.mObject.onTime(curr.mObject.mData); } curr = next; } }