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