FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [May 2011 Threads] Task pausing Posted by Simon Marchant on May 19, 2011 Hi I have a system that, at the moment dose not use preemption (that may come later) so I want the task to pause (not a timed delay) in order to let the other tasks run. From what I can see I have 2 options, vTaskDelay(0) or taskYIELD().
1, Does vTaskDelay(0), with delay = 0, give the behaviour as taskYIELD()? 2, Do either of these let all tasks, of all priorities, to run before resuming the calling task? 3, If not, will ALL tasks of the same priority be given the chance to run before resuming the calling task?
Thanks for any help
simon
RE: Task pausing Posted by Dave on May 19, 2011 vTaskDelay(0) and taskYIELD() will have the same end behavior, but vTaskDelay(0) will take longer to run. Both will force a switch to another ready task that has an identical priority, neither will allow a task that has a lower priority to run. You can call vTaskDelay() with a non zero value if you need tasks that have a lower priority to run.
RE: Task pausing Posted by Simon Marchant on May 19, 2011 Thanks Dave,
Just to clarify, will ALL tasks of the same priority (and in the ready state) run before the calling task resumes?
RE: Task pausing Posted by Dave on May 19, 2011 Yes, they should do.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|