Представьте себе ситуацию, в которой несколько потоков могут писать в определенный буфер (без ограничений на его размер) и применяются все эти ограничения:
- Перед запуском всех потоков буфер инициализируется нулем.
- Поток может писать в буфер или нет.
- Если поток пишет в буфер, он записывает определенную строку байтов (назовем ее
V
, причемV
состоит не только из нулей и одинакова для всех потоков). - Ни один поток никогда не читал из буфера.
- То, что поток пишет в буфер, и то, что он пишет в буфер, не зависит от того, писали в буфер другие потоки или нет.
- Если поток начинает запись в буфер, то он записывает его полностью.
- Потоки пишут в буфер, не следуя точному порядку байтов.
Вопрос: после того, как все потоки остановились (и это происходит только при условии, что они закончили запись в буфер, если они начали), гарантируется ли мне при любой реальной или хотя бы правдоподобной архитектуре, что:
- либо буфер содержит все нули,
- или буфер содержит ровно
V
?
Если нет, то есть ли какой-либо последовательный аргумент, утверждающий, что может быть записана другая строка байтов, назовем ее V'
? Если да, то в чем могут быть различия между V
и V'
? Почему?