But i think in these code if prvUnlockQueue( pxQueue ) return pdTRUE then xTaskResumeAll() must return pdTRUE( if scheduler is not locket nested) , so it’s meaningless to do taskYIELD(). So these code can be changed to:
This is the most complex part of the code. Everything is geared at ensuring interrupts are disabled for the shortest possible period.
You might be right in your comment - with the scheduler suspended unlocking the queue can only move items to the pending ready list - where they will be removed by xTaskResumeAll().
I know there was a lot of thought that went into this code sequence. It was originally as per or similar to your suggestion. This one will take a bit of digging time for me to find why the change was made. It will be good to look again at this in detail. Out of interest I will run a few black box style tests to see if they ever fail with the change.
In any case the optimisation saving would be minimal - with a couple of tests being removed.