[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
предполагается что у нас разрешены прерывания (переменные ес-но volatile)
при этом другому процессу разрешено прерывать процедуру READ; TEST/MODIFY; WRITE;
Алгоритм Петерсона (1981)
int turn;
int flag[ 2 ];void enter_region( int i )
{
int other; /* номер другого процесса */
other = 1 - i;
flag[ i ] = TRUE;
turn = i;
while (turn == i && flag[ other ] == TRUE) /* пустой оператор */;
}void leave_region( int i )
{
flag[ i ] = FALSE;
}
E-mail: info@telesys.ru