Delay working when queue involved

In one of my tasks I have code like below

fn(){
xQueueReceive(que_handle, portMAX_DELAY){
       // process message
}
vTaskDelay(100)
}

Assuming tick time is 1ms, in the above case at what interval mcu processes if it receives a message in queue? is it once in every 100ms or something else?

The following call will block forever until a message is received:

xQueueReceive(que_handle, portMAX_DELAY)

The call to vTaskDelay will move the task out of ready state for the specified amount of ticks. After the number of ticks have passed, the task will be in the ready state - It will run if there is no other higher priority ready task.

Additionally, you should use pdMS_TO_TICKS to convert milliseconds to ticks:

vTaskDelay( pdMS_TO_TICKS( 100 ) );

Thanks.

let us assume due to vTaskDelay task entered in to block state and 50ms is elapsed in block state at that time queue message received, in this case what is the behaviour of freeRTOS?

In this specific case, the task will remain blocked for next 50ms. The reason is that by calling vTaskDelay you are asking the scheduler to put the task to sleep for 100ms.

If you want to process the received message ASAP, remove vTaskDelay and use xQueueReceive to block. Just to make it clear, when a task is blocked on a queue to receive a message, it does not consume any CPU cycle.

Thanks.