Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT




Loading

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.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS