How does vTaskDelay(0) works? Is it equal to taskYIELD()? And if isn’t what is the difference?
taskYIELD() just performs a yield in whatever way the port being used does not.
vTaskDelay() is a longer function that calculates a wake time, and blocks the task. If vTaskDelay( 0 ) is called, then the wake time will be immediately, so the task will not block, but a yield will still be performed. Therefore calling vTaskDelay( 0 ) will have exactly the same end result as calling taskYIELD(), but is much less efficient in lines of code being executed.