Exemplo n.º 1
0
 waitable_timer(bool utcMode)
 {
     _utcMode                  = utcMode;
     _exited                   = false;
     _expireTime               = long.MaxValue;
     _eventsQueue              = new Map <long, waitable_event_handle>(true);
     _timerHandle              = CreateWaitableTimer(0, 0, 0);
     _workEngine               = new work_engine();
     _timerThread              = new Thread(timer_thread);
     _timerThread.Priority     = ThreadPriority.Highest;
     _timerThread.IsBackground = true;
     _timerThread.Name         = _utcMode ? "UTC定时器" : "系统定时器";
     _workEngine.run(1, ThreadPriority.Highest, true, _utcMode ? "UTC定时器调度" : "系统定时器调度");
     _timerThread.Start();
 }
Exemplo n.º 2
0
                waitable_timer(bool utcMode)
                {
                    _utcMode                  = utcMode;
                    _exited                   = false;
                    _expireTime               = long.MaxValue;
                    _eventsQueue              = new Map <long, waitable_event_handle>(true);
                    _timerHandle              = CreateWaitableTimer(0, 0, 0);
                    _workEngine               = new work_engine();
                    _workStrand               = new work_strand(_workEngine);
                    _timerThread              = new Thread(timerThread);
                    _timerThread.Priority     = ThreadPriority.Highest;
                    _timerThread.IsBackground = true;
                    _timerThread.Name         = _utcMode? "UTC定时器调度" : "系统定时器调度";
                    _workEngine.run(1, ThreadPriority.Highest, true);
                    _timerThread.Start();
                    uint MaximumTime = 0, MinimumTime = 0, CurrentTime = 0, ActualTime = 0;

                    if (0 == NtQueryTimerResolution(out MaximumTime, out MinimumTime, out CurrentTime))
                    {
                        NtSetTimerResolution(MinimumTime, 1, out ActualTime);
                    }
                }