Могу ли я убрать флаг последней инструкции в алгоритме Деккера [i] = false? - PullRequest
0 голосов
/ 26 января 2020

С учетом двух процессов, 0 и 1, и программы для процесса 0:

do
{

flag[0]= true;

while(flag[1]==true)
{
  if(turn!=0)   
   {

    flag[0] = false; 

    while(turn!=0); 

    flag[0] = true;    

   }

}

 // CS

turn = 1;     

flag[0] = false; 
}while(true);

Для чего нужен флаг последней строки [0] = false? Почему его нельзя удалить? go вернется к флагу первой строки [0] = true, и из-за этого ничего не произошло.

1 Ответ

1 голос
/ 27 января 2020

while(true) l oop не является частью алгоритма Деккера.

flag[0]=false позволяет процессу 1 войти в критическую секцию, в то время как процесс 0 отключен, выполняя несвязанные действия. Если процесс 0 непрерывно возвращается в критическую секцию в бесконечном l oop, то в этом нет необходимости, поскольку процесс 0 никогда не будет выключен, выполняя несвязанные действия.

Хотя это не обычный сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...