同时更新结构的不同字段——安全吗?

标签 c concurrency

考虑我有一个结构:

struct SimpleStruct {
    int x;
    int y;
    int z;
}

现在如果我有 3 个单独的线程,每个线程只分别更新结构的 x、y、z 字段之一,让它们同时更新是否安全,或者我应该使用互斥锁或其他东西来阻止它发生了什么?

最佳答案

它是安全的(结构是对齐的)。

但是你应该小心假共享(参见 Herb Sutter's article 关于它):如果字段在同一个缓存行中,写入将被有效地序列化。

关于同时更新结构的不同字段——安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587004/

相关文章:

c - 有没有一种可移植的方法来定义 INT_MAX?

c - 严格别名是单向的吗?

Python 共享队列 - 2 个不同的线程

java - 在 REST 中处理相同的并发请求

multithreading - 从 NSOperation 对象访问另一个类的属性

java - ReentrantLock 实际使用 lockInterruptibly

java - 多线程服务器共享ArrayList

c - 在 WIndows 中使用 C 发送 HTTP GET 或 POST 请求

C:复制结构/数组元素

c - C 中的胖指针