在一个多线程 (Linux/amd64, Pthreads, C11) 应用程序中,我有一个结构体 (
(如果需要,我可以将
顺带一提,
是否可能原子地访问这两个字段(相对于访问同一
看起来
(与我的MELT monitor GPLv3+软件相关的问题)
momitem_st
在 monimelt.h 中),其中包含两个字段。uint16_t i_paylkind;
void* i_payload;
(如果需要,我可以将
i_paylkind
的类型更改为其他整数类型,例如uintptr_t
或atomic_uint
)顺带一提,
i_paylkind
是一个鉴别标记,定义了i_payload
所指向的实际结构体运行时类型。是否可能原子地访问这两个字段(相对于访问同一
struct
的其他线程)。 当然,我在同一结构体中还有一个pthread_mutex_t i_mtx;
,可以使用pthread_mutex_lock
锁定。 但出于性能原因,我可能想要避免那样做(也许事务性内存可能与此有关)。看起来
<stdtomic.h>
没有提供任何机制来实现这一点。(与我的MELT monitor GPLv3+软件相关的问题)