spice-client源碼解析之process_loop.cpp

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)函數,將這些事件的描述對應起來;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章