gpt4 book ai didi

c++ - gcc : __sync_lock_test_and_set VS. = 具有可变变量的运算符

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:35 26 4
gpt4 key购买 nike

2 个线程 A 和 B 共享一个 volatile int i

线程 A 像这样递增 i :__sync_fetch_and_add(&i, 1);

线程 B 将 i 设置为任意值 V,如下所示:i = 15;

我的问题:对于这种用法,B 是否应该使用 __sync_lock_test_and_set(&i, 15); 而不是直接使用 = 运算符?

如果是,__sync_lock_release 是否必须在 test_and_set 之后强制执行?

环境:gcc 4.1.2,centos 5.11 32 位,无 c++11

最佳答案

如果您不使用同步功能,那么在线程 A 和 B 之间存在 i 的数据竞争。并且根据__sync_lock_test_and_set__sync_lock_release的定义,你应该在使用sync_lock之后使用release。

for ref

关于c++ - gcc : __sync_lock_test_and_set VS. = 具有可变变量的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526922/

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