Изменение в реализации блокировки с помощью Test and Set (& lock-> flag, 1) - PullRequest
0 голосов
/ 09 марта 2019

С учетом реализации блокировки в книге Операционные системы: три простых пьесы (http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf) на стр. 8, где блокировка получается с помощью атомарной операции, выполняемой Test and Set (& lock-> flag, 1) (реализация приведено на странице 6), вместо того, что пойдет не так, если я реализую блокировку с помощью этой функции

void lock(lock_t *lock)
{
    while(1)
    {
      while(lock->flag==1)
      ;
      if(test_and_set(&lock->flag,1)==0)
        return;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...