~~NOTOC~~
===== tn_sys_exit_critical() =====

Вызов функции разрешает переключение контекста и системные прерывания после вызова парной функции [[tnkernel:ref:sys:tn_sys_enter_critical|tn_sys_enter_critical()]]. 

**Вызов:**
<code cpp>
void tn_sys_exit_critical (void);
</code>

**Разрешен вызов:** \\ 

В контексте задачи

**Параметры функции:**

нет

**Возвращаемые значения:**  

нет

**Пример вызова:**  
<code cpp>
long long Global_Variable;

void TN_TASK Task_1 (void *param)
{
    for (;;)
    {
        tn_sys_enter_critical();
        Global_Variable = 1255456;
        tn_sys_exit_critical();
    }
}

void TN_TASK Task_2 (void *param)
{
    long long tmp;

    for (;;)
    {
        tn_sem_acquire(&sem_rc, TN_WAIT_INFINITE);

        tn_sys_enter_critical();
        tmp = Global_Variable;
        tn_sys_exit_critical();

        if (tmp)
            tn_sem_signal(&sem_tr);
    }
}
</code>

\\ 

----
[[tnkernel:ref:sys:intro#Системные сервисы|К списку сервисов]]