Bee*_*ope 10 linux concurrency multithreading mmap memory-mapping
mmap调用的效果是原子的吗?
也就是说,对mmap访问受影响区域的其他线程而言,由 所做的映射更改是否以原子方式出现?
作为试金石,请考虑您mmap在一个全为零的文件中执行 a 的情况(来自线程T1,这是此时唯一的线程),然后开始从该区域读取的第二个线程T2。然后,再次在 T1(原始线程)上mmap对同一区域进行第二次调用,将映射替换为针对所有 1 的文件的新映射。
是否有可能为读者线程读取一些页面一(即,见第二mmap的效果),然后随后从一些页面读取零(即,见效果的第一个映射)?
您可以假设读取器线程上的读取已被正确隔离,即上述效果不仅仅由于 CPU/一致性级别的内存访问重新排序而发生。
Mik*_*son -3
内存映射发生在进程级别,因此属于同一进程的所有线程都会立即看到。
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |