В чем разница между безопасным, обычным и атомарным регистры?

Кто-нибудь, пожалуйста, может дать исчерпывающее объяснение? Я погружаюсь в параллельное программирование и встречался с этими регистрами, пытаясь понять консенсус.

Из статьи Лампорта «О межпроцессном взаимодействии» : ... обычный регистр является атомарным, если два последовательных чтения, которые перекрывают одну и ту же запись, не могут получить новое, а затем старое значение ... .

Предположим, что сначала идет thread0.write (0) - без перекрытия. В принципе, используя определение Лэмпорта, можно сказать, что thread1 может сначала прочитать 1 , а затем снова 0 , если оба чтения являются последовательными и перекрываются с thread0. напишите (1) . Но как это возможно?

17
задан skaffman 28 March 2012 в 16:33
поделиться