Алгоритмы синхронизации потоков. Критическая секция

Алгоритмы синхронизации потоков – семафоры, мьютексы и критические секции.

Синхронизация в пользовательском режиме:

Критическая секция – это часть программы, в которой код получает доступ к разделяемым ресурсам. Для того, чтобы исключить эффект гонок по отношению к ресурсу необходимо, чтобы только один процесс мог находиться в своей критической секции, т.е. критическая секция должна выполняться как атомарная операция. При создании критической секции используется тип:

CRITICAL_SECTION s;

При входе в критическую секцию поток должен вызвать функцию

EnterCriticalSection(& s);

При выходе из критической секции – функцию:

LeaveCriticalSection(& s);

Простейшая реализация критической секции с помощью запрета прерывания. Использование критической секции не исключает взаимной блокировки процессов (это недостаток). Реализация в пользовательском режиме выполняется достаточно быстро, но недостатком является активное ожидание потоков, когда они проверяют свои условия входа в критические секции и тратят впустую процессорное время.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: