使数据使用 ? 在C11 GCC中读/写原子。

问题描述 投票:0回答:3
我从SO线程herehere中了解到,不安全地假设多线程应用程序中的数据读/写在OS /硬件级别上是原子的,并且可能导致数据损坏。我想知道使用int C11库和Linux上的GCC编译器对<stdatomic.h>变量进行读写的最简单方法。

如果我当前在线程中具有int分配:messageBox[i] = 2,如何使该分配成为原子?同样适用于阅读测试,例如if (messageBox[i] == 2)

[我从这里和这里的SO线程中了解到,不安全地假设多线程应用程序中的数据读/写在OS /硬件级别是原子的,并且损坏...

c multithreading atomic c11 atomicity
3个回答
3
投票
对于C11原子,您甚至不必使用函数。如果您的实现(=编译器)支持原子,则只需将原子说明符添加到变量声明中,然后对该原子进行所有操作:

0
投票
假设读取/写入数据并不安全。多线程应用程序在操作系统/硬件级别是原子的,并且可能会导致数据损坏

0
投票
如果我当前在线程中有一个int赋值:messageBox [i] = 2,如何使该赋值原子化?同样适用于阅读测试,例如if(messageBox [i] == 2)。
© www.soinside.com 2019 - 2024. All rights reserved.