Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
474.00K
Category: softwaresoftware

Системное ПО. Синхронизация потоков

1. Системное ПО

Синхронизация потоков

2. Системное ПО

Критическая секция
Критическая
секция — участок
исполняемого кода
программы, в
котором
производится
доступ к общему
ресурсу (данным
или устройству),
который не должен
быть одновременно
использован более
чем одним потоком
исполнения.

3. Системное ПО

Пример

4.

Критическая секция

5. Системное ПО

Мьютекс
Мьютекс отличается от
критической секции
только тем, что может
быть доступен также для
других процессов, в то
время, как критическая
секция – только для
одного процесса
WaitForSingleObject
делает мьютекс
«занятым». Если он уже
занят, ждет, пока
освободится

6.

Мьютекс

7. Системное ПО

Событие
Событие позволяет
«отправить сигнал»
сразу нескольким
потокам
ResetEvent
«отменяет»
событие
bManualReset – автоматическое переключение в состояние «событие
отсутствует»
bInitialState – начальное состояние события. FALSE – события нет

8. Системное ПО

Событие
После запуска
Сразу после
нажатия

9. Системное ПО

Семафор
Семафор позволяет
управлять доступом
к пулу объектов
WaitForSingleObject = P
ReleaseSemaphore = V
Пусть S – Семафор. Его значение изначально равно количеству объектов
в пуле.
Для объекта семафор вводятся две неделимые операции:
V(S): переменная S увеличивается на 1 единым действием.
P(S): уменьшение S на 1, если это возможно. Если S=0, то в этом
случае поток, вызывающий операцию Р, ждет, пока это уменьшение
станет возможным
English     Русский Rules