How Long Does It Take To Unblock?

jwestmoreland wrote on Tuesday, December 20, 2005:


if( xQueueSendFromISR( xRxedCharsU0, &cChar, pdFALSE ) )
/*If the post causes a task to wake force a context switch as the woken task may have a higher priority than the task we have interrupted. */

In task:

    for (EVER)
    /* Block on the queue that contains received bytes until a byte is
    available. */
    if( xQueueReceive( xRxedCharsU0, &cByteRxed, comRX_BLOCK_TIME ) )

How long does it take for the task to be unblocked?  Is it a function of the timer tick or of the CPU clock?


rtel wrote on Tuesday, December 20, 2005:

In this case the timer tick does not effect the time it takes to unblock as the action occurs in the ISR.  Posting to the queue may cause a task to be unblocked and placed in the ready queue.  If such a task has a priority higher than the interrupted task then xQueueSendFromISR() will return true and taskYIELD will be called.  taskYIELD makes the unblocked task the current task (just a pointer assignment) - meaning that the unblocked task is returned to as the ISR exists.  A faster CPU clock will obviously make the function execute faster, but the tick rate is not relevant in this case.