Спин-лок в алгоритме Петерсона - PullRequest
0 голосов
/ 22 марта 2019
#define n 2
#define True 1
#define false 0
int interested[n]=False
int turn;
void entry_section(int process)
{
int other;
other=1-process;
interested[process]=TRUE;
Turn=Process; 
while(interested[other]==True && turn== process);

//ENTERS CS//

void exit_section(int process)
{
interested[process]=False;
}

Теперь скажите, что у нас есть 2 процесса P0 и P1. Скажем, P0 прервано после выполнения turn = process, а затем P1 входит и выполняет entry_section, когда P1 достигает условия while, он находит условие while равным true и будет ждать, что должно привести к спин-блокировке. Но повсюду дается, что в алгоритме Петерсона никогда не может возникать тупик и спин-блокировка. Так, пожалуйста, ведите меня, где я ошибся?

...