Составители:
Недостаток такого решения задачи о критической секции в
том, что в критическую секцию может попасть любой из про-
цессов (безконтрольно). Например, один процесс может несколько
раз входить в свою критическую секцию, а другой — ни разу. Это
— несправедливое решение. Для того, чтобы решение было спра-
ведливым, должна соблюдаться очередность входа в критическую
секцию, если несколько процессов пытаются туда войти.
Расмотрим следующую программу.
bool in1 = false, in2 = false;
int last = 1;
process CS1 {
while (true) {
last = 1; in1 = true; # протокол входа
< await (!in2 or last == 2); >
[критическая секция];
in1 = false; # протокол выхода
[некритическая секция];
}
}
process CS2 {
while (true) {
last = 2; in2 = true; # протокол входа
< await (!in1 or last == 1); >
[критическая секция];
in2 = false; # протокол выхода
[некритическая секция];
}
}
Здесь введена пременная last, которая принимает значение 1,
если последним входил в критическую секцию процесс CS1, и при-
нимает значение 2, если последним входил в критическую секц ию
процесс CS2.
53
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
