====== OSA : OS_LeaveCriticalSection ======
**OS_LeaveCriticalSection ()**\\
=== ===
{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}
Выход из критической секции. При этом восстанавливаются прерывания (из внутренней системной переменной) и разблокируются все задачи.
=== Разрешен вызов: ===
Только из задачи
=== Параметры функции: ===
Нет
=== Возвращаемое значение: ===
Нет
=== Пример вызова: ===
const char * TestString = "We are in Critical Section now.\n";
void Task (void)
{
static const char * str;
for (;;) {
/*...*/
OS_EnterCriticalSection ();
// Теперь мы можем отправлять данные через USART, не опасаясь,
// что какая-нибудь задача попытается захватить этот ресурс
str = TestString;
while (*str)
{
OS_Cond_Wait(TRMT); // Ждем освобождения передатчика USART
TXREG = *str++;
}
OS_LeaveCriticalSection ();
/*...*/
}
}
=== См. также ===
----
* [[osa:ref:services:alphabetical|Алфавитный указатель]]
* [[osa:ref:services:brieflist|Все сервисы]]
~~UP~~