How Long Does It Take To Unblock?

jwestmoreland wrote on Tuesday, December 20, 2005:

In RCV IRQ:

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. */
            taskYIELD();
        }

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?

Thanks.

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.

Regards.