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] [December 2013 Threads] Task creation in another taskPosted by *anonymous on December 6, 2013 When creating a task within another task as shown below
int main( void )
{
xTaskCreate( vTask1, "Task1", 500, NULL, 1, NULL );
vTaskStartScheduler();
for(;;);
}
void vTask1( void *pvParameters )
{
xTaskCreate( vTask2, "Task2", 500, NULL, 1, NULL );
}
In this code vTask2 will create again and again in each call of vTask1 right? will that use separate memory for each creation?
Task creation in another taskPosted by rtel on December 6, 2013 The code, as you have provided it, is not correct because you show vTask1() exiting its function without deleting itself. Tasks must include an infinite loop, or be deleted. However, I assume you have cut out all the other source code to just show the line of interest.
First - it is perfectly ok to create tasks from inside other tasks.
Second - any call to xTaskCreate() will allocate a TCB structure and a stack for that task. If you create TaskX, then, without deleting TaskX you create TaskY the two tasks will not be using the same memory because both calls to xTaskCreate() will allocate RAM separately.
On the other hand, if you create TaskX then delete TaskX the memory allocated to TaskX will be freed again. If you subsequently create TaskY xTaskCreate() will allocate RAM for TaskY just like normal, and that RAM may or may not be the same that was previously allocated to TaskX. As TaskX has been deleted it does not matter if the same memory is reused.
Regards.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|