Являются ли mmap
вызовами atomi c в их действии?
То есть, изменение отображения, сделанное mmap
, отображается атомарно для других потоков, получающих доступ к затронутой области?
В качестве лакмусовой бумажки рассмотрим случай, когда вы делаете mmap
в файле всех нулей (из потока T1 , который на данный момент является единственным потоком), затем запускаете второй поток T2 чтение из региона. Затем снова в T1 (исходный поток) выполните второй mmap
вызов для той же области, заменив сопоставление новым для файла всех.
Возможно ли для потока чтения читать единицу с некоторой страницы (то есть увидеть вторую действующую mmap
), а затем впоследствии читать ноль с какой-то страницы (то есть, увидеть первую действующую карту)?
Вы можете предположить, что чтения в потоке читателя должным образом ограждены, то есть, что вышеупомянутый эффект не происходит исключительно из-за переупорядочения чтения.