考虑我有一个结构:
struct SimpleStruct {
int x;
int y;
int z;
}
现在如果我有 3 个单独的线程,每个线程只分别更新结构的 x、y、z 字段之一,让它们同时更新是否安全,或者我应该使用互斥锁或其他东西来阻止它发生了什么?
最佳答案
它是安全的(结构是对齐的)。
但是你应该小心假共享(参见 Herb Sutter's article 关于它):如果字段在同一个缓存行中,写入将被有效地序列化。
关于同时更新结构的不同字段——安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587004/