You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows/Linux下C程序无同步多线程访问unsigned int是否会读到部分值?

多线程无同步访问unsigned int变量的原子性问题
  • 结论:在Windows和Linux平台上,对齐正确的unsigned int类型变量的读写操作是原子性的,线程3不可能读到0x0000FFFF这类“部分写入”的值,只会读到0或者0xFFFFFFFF。

在x86/x86_64架构(Windows、Linux的主流运行平台)中,CPU原生保证:对齐的、宽度不超过机器字长(32位或64位)的基本类型读写操作是原子的。也就是说,线程1或线程2的写入操作要么完全完成,要么完全未执行,不会存在只写入一半字节的中间状态,线程3读取时只会拿到完整的写入结果。

需要注意的核心前提是变量对齐正确:unsigned int通常为4字节,只要它的内存地址是4字节对齐的,就满足CPU原子操作的要求。而全局变量在编译时会被编译器自动按类型要求对齐,所以一般无需额外处理。

内容的提问来源于stack exchange,提问作者vengy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:27:33