Bird
0
0

Examine the following Resource Manager Task code snippet. What is the main issue?

medium📝 Debug Q6 of 15
FreeRTOS - Design Patterns for RTOS
Examine the following Resource Manager Task code snippet. What is the main issue?
void ResourceManagerTask(void *pvParameters) {
  Request req;
  while(1) {
    xQueueReceive(queue, &req, 0);
    printf("Request ID: %d\n", req.requestId);
  }
}
AThe task deletes itself after processing a request
BxQueueReceive is called with zero block time, causing missed requests
CThe queue handle is not initialized before use
DThe printf statement is inside the while loop
Step-by-Step Solution
Solution:
  1. Step 1: Analyze xQueueReceive parameters

    The block time is zero, so the call returns immediately if no data is available.
  2. Step 2: Consequence of zero block time

    This causes the task to spin and potentially miss requests arriving after the call.
  3. Final Answer:

    Zero block time causes missed requests -> Option B
  4. Quick Check:

    Non-blocking receive risks missing queued messages [OK]
Quick Trick: Zero block time means no waiting for messages [OK]
Common Mistakes:
  • Assuming zero block time waits for data
  • Ignoring queue initialization issues
  • Thinking printf inside loop is a bug

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More FreeRTOS Quizzes