gpt4 book ai didi

c - 以原子方式访问两个标量场

转载 作者:太空狗 更新时间:2023-10-29 17:24:16 24 4
gpt4 key购买 nike

在多线程(Linux/amd64、Pthreads、C11)应用程序中,我有一个 struct ( momitem_stmonimelt.h 中)主要包含两个字段

uint16_t i_paylkind;
void* i_payload;

(如果需要,我可以将 i_paylkind 的类型更改为其他一些整数类型,例如 uintptr_tatomic_uint )

FWIW,i_paylkind是定义实际 struct 的判别式运行时键入 i_payload指向。

是否有可能以原子方式访问这两个字段(w.r.t. 其他线程访问相同的 struct )。当然我还有一个pthread_mutex_t i_mtx;在我可以锁定的相同结构中(使用 pthread_mutex_lock )。但出于性能原因,我可能想避免这种情况(也许 transactional memory 可能是相关的)

看起来像 <stdtomic.h> 不为此提供任何机器。

(与我的 MELT monitor GPLv3+ 软件相关的问题)

最佳答案

如果您真的有一个 C11 编译器,_Atomic 限定符适用于任何数据类型。就用它吧。对于 struct 类型,您唯一可以做的就是加载和存储,不幸的是,您无权访问各个成员。

关于c - 以原子方式访问两个标量场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com