【发布时间】:2019-02-28 07:32:08
【问题描述】:
假设我有一个从地址 0 到 128 的连续内存部分,并将其整齐地一分为二,以便每六个字节有 6 个线程工作,线程 1 得到 0, 6, 12, 18...,线程 2 得到 1, 7, 13, 19...,等等
如果这些线程写入这些字节,是否会导致 CPU 尝试在每个内核之间同步缓存,因为它们是彼此本地的?如果每个字节都作为std::atomic<uint8> 访问呢?
【问题讨论】:
-
读取或写入权限?读:不,写:是,感谢缓存线
-
@JVApen:读取的情况还在污染缓存行;每个缓存行的 5/6 与线程无关。
标签: c++ multithreading memory optimization atomic