====== OSA : OS_Task_Replace ======
**OS_Task_Replace (priority, TaskName)**\\
=== ===
{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}
Заменить текущую задачу на новую. Задача переводится в состояние "не создана", дескриптор текущей задачи освобождается, а на ее место в дескриптор заносится новая задача, ее приоритет и флаги состояния. Изначально новая задача находится в состоянии готовности.
Допускается перезапуск задачей самой себя. Может оказаться полезным для быстрого перезапуска, когда вечному циклу внутри задачи предшествует секция инициализации.
=== Разрешен вызов: ===
Только из задачи
=== Параметры функции: ===
{| class = "fpl"
|-
|//''priority''//
|Приоритет. Может быть от 0 (высший) до 7 (низший)
|-
|//''TaskName''//
|Имя функции, которая будет использоваться как задача.
|}
=== Возвращаемое значение: ===
Нет
=== Пример вызова: ===
void Task2 (void)
{
for (;;) {
OS_Yield();
/*...*/
}
}
void Task1 (void)
{
char temp;
for (;;) {
/*...*/
// Удаляем текущую задачу и на ее место создаем Task2() с таким же приоритетом
temp = OS_Task_GetPriority();
OS_Task_Replace (temp, Task2);
/*...*/
}
}
=== Old style name ===
**OS_ReplaceTask**\\
=== См. также ===
* [[osa:ref:allservices:OS_Task_Create|OS_Task_Create]]
* [[osa:ref:allservices:OS_Task_Replace|OS_Task_Replace]]
* [[osa:ref:allservices:OS_Task_Delete|OS_Task_Delete]]
* [[osa:ref:allservices:OS_Task_Define|OS_Task_Define]]
* [[osa:ref:allservices:OS_Task_GetCur|OS_Task_GetCur]]
* [[osa:ref:allservices:OS_Task_GetCreated|OS_Task_GetCreated]]
* [[osa:ref:allservices:OS_Task_Pause|OS_Task_Pause]]
* [[osa:ref:allservices:OS_Task_Continue|OS_Task_Continue]]
* [[osa:ref:allservices:OS_Task_IsPaused|OS_Task_IsPaused]]
* [[osa:ref:allservices:OS_Task_GetPriority|OS_Task_GetPriority]]
* [[osa:ref:allservices:OS_Task_SetPriority|OS_Task_SetPriority]]
----
* [[osa:ref:services:alphabetical|Алфавитный указатель]]
* [[osa:ref:services:brieflist|Все сервисы]]
~~UP~~