【发布时间】:2025-12-19 02:00:11
【问题描述】:
我从 SO 线程 here 和 here 中了解到,假设多线程应用程序中的数据读取/写入在操作系统/硬件级别是原子的并不安全,并且数据损坏可能结果。我想知道使用<stdatomic.h> C11 库和Linux 上的GCC 编译器使int 变量原子读写的最简单方法。
如果我目前在一个线程中有一个int 分配:messageBox[i] = 2,我如何使这个分配原子化?同样适用于阅读测试,例如if (messageBox[i] == 2)。
【问题讨论】:
-
也许像this one 这样的参考资料会有所帮助?
-
我已经看到了,但由于它仅供参考,我希望这里有人可能有一些我可以理解的代码。引用太简洁了,不知从何说起。
-
任何答案都将特定于您使用的任何线程标准或线程库。如果它提供了某种方式来获得原子访问,那么你就使用它。如果没有,那你就不走运了。 (假设你想编写可移植的代码。)
标签: c multithreading c11 atomic