Что означает атомарно выполнять функции блокировки мьютекса? - PullRequest
0 голосов
/ 17 марта 2019

Утверждается, что вызовы acqu () или release () должны выполняться атомарно. Что они подразумевают под этим?

acquire() {
   while (!available)
      ; /* busy wait */
   available = false;;
}
   do {
      (acquire lock)
         critical section
      (release lock)
         remainder section
   } while (true);

release() {
   available = true;
}

1 Ответ

0 голосов
/ 18 марта 2019

Операция atomic означает, что она будет либо полностью завершена, либо не завершена вообще.Операция не может быть остановлена ​​/ уничтожена / завершена в MIDDLE .

Атомарные операции используются в основном в случае многопоточного программирования.Эти операции используются для поддержания здравого смысла критической секции / переменной в здравом уме, так как многие потоки стремятся к их выполнению.

Хорошее место, чтобы прочитать об атомарных операциях и параллелизме в C ++ - "Параллельность в действии" Энтони Уильямса

...