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