C++ gcc:uuuu sync_lock_test_和_set VS.=带有可变变量的运算符

C++ gcc:uuuu sync_lock_test_和_set VS.=带有可变变量的运算符,c++,gcc,volatile,built-in,C++,Gcc,Volatile,Built In,2个线程A和B共享Avolatile int i 线程A按如下方式递增i:\u同步\u获取\u和\u添加(&i,1) 线程B将i设置为任意值V,如下所示:i=15 我的问题是:对于这种用法,B是否应该使用\uuuuu sync\uu lock\utest\u和\uset(&i,15)而不是与=操作员直接做作 如果是,在测试和设置之后,\u同步\u锁定\u释放是否强制执行 Env:gcc 4.1.2,centos 5.11 32位,无c++11如果不使用同步函数,则线程A和B之间存在i的数据竞争。

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

线程A按如下方式递增
i
\u同步\u获取\u和\u添加(&i,1)

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

我的问题是:对于这种用法,B是否应该使用
\uuuuu sync\uu lock\utest\u和\uset(&i,15)而不是与
=
操作员直接做作

如果是,在测试和设置之后,
\u同步\u锁定\u释放
是否强制执行


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

如果不使用同步函数,则线程A和B之间存在
i
的数据竞争。 根据
\uuuu sync\u lock\u test\u和
\uu sync\u lock\u release
的定义,您应该在使用sync\u lock之后使用release


如果不使用同步功能,则线程A和B之间存在
i
的数据竞争。 根据
\uuuu sync\u lock\u test\u和
\uu sync\u lock\u release
的定义,您应该在使用sync\u lock之后使用release