Кто-нибудь, пожалуйста, может дать исчерпывающее объяснение? Я погружаюсь в параллельное программирование и встречался с этими регистрами, пытаясь понять консенсус.
Из статьи Лампорта «О межпроцессном взаимодействии» : ... обычный регистр является атомарным, если два последовательных чтения, которые перекрывают одну и ту же запись, не могут получить новое, а затем старое значение ... .
Предположим, что сначала идет thread0.write (0)
- без перекрытия. В принципе, используя определение Лэмпорта, можно сказать, что thread1
может сначала прочитать 1 , а затем снова 0 , если оба чтения являются последовательными и перекрываются с thread0. напишите (1)
. Но как это возможно?