NVMAIN 源碼解析

void EventQueue::Loop( ncycle_t steps )
{
    /* Special case. */
    if( steps == 0 && nextEventCycle == currentCycle )
    {
        Process( );
        return;
    }

    ncycle_t stepCycles = steps;

    while( stepCycles > 0 )
    {
        /* No events in this step amount, just change current cycle. */
        if( nextEventCycle > currentCycle + stepCycles )
        {
            currentCycle += stepCycles;
            break;
        }

        ncycle_t currentSteps = nextEventCycle - currentCycle;

        currentCycle += currentSteps;
        stepCycles -= currentSteps;

        /* Process will update nextEventCycle for the next loop iteration. */
        Process( );
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章