来自struct的bitflags的原子变量

时间:2014-10-01 12:14:02

标签: c multithreading struct atomic

我有一个原子变量,我用C11原子读取和写入。

现在我有一个包含这样的标志的结构:

typedef struct atomic_container {
    unsigned int        flag1       : 2;
    unsigned int        flag2       : 2;
    unsigned int        flag3       : 2;
    unsigned int        flag4       : 2;
    unsigned int        progress    : 8;
    unsigned int        reserved    : 16;

}atomic_container;

然后我使用一个函数将此结构转换为使用位移的32位宽度的无符号整数。然后用原子函数写入它。

我想知道我是否可以直接以原子方式编写此结构,而不是先将其转换为无符号整数。这似乎有效,但我担心这可能是实现定义,可能导致未定义的行为。正如我想要的那样,所讨论的结构是32位宽。

0 个答案:

没有答案