spice 維護了一個Events Queue Loop,用來處理事件;
1.爲什麼使用event loop:
個人理解:event 是把需要處理的時間放到一個循環裏, 同一個loop中的線程的執行使用異步api ,大量的節省了系統的開銷;
2.函數:
Timer::Timer()
TimersQueue::TimersQueue(AbstractProcessLoop& owner)
TimersQueue::clear_queue()
TimersQueue::activate_interval_timer(Timer* timer, unsigned int millisec)
TimersQueue::deactivate_interval_timer(Timer* timer)
TimersQueue::get_soonest_timeout()
TimersQueue::timers_action()
一個定時器隊列,用來添加,刪除,獲得超時等;使用這個函數來將事件的時間描述符和fd等結合起來。
ProcessLoop::ProcessLoop(void* owner)
: _events_queue (*this)
, _timers_queue (*this)
, _owner (owner)
, _quitting (false)
, _exit_code (0)
, _started (false)
ProcessLoop::ProcessLoop(void* owner)函數,將這些事件的描述對應起來;