[an error occurred while processing this directive] [an error occurred while processing this directive]
я не нашел ошибки в алгоритме Петерсона - поправте если я неправ
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено yes 17 января 2002 г. 18:53
В ответ на: Даа... Тут аппаратные средства не помешали бы... отправлено kons 17 января 2002 г. 18:43

предполагается что у нас разрешены прерывания (переменные ес-но 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