====== 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~~