繁体   English   中英

gcc:__sync_lock_test_and_set VS. =具有volatile变量的运算符

[英]gcc : __sync_lock_test_and_set VS. = operator with volatile variables

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强制执行__sync_lock_release吗?

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

如果你不使用同步函数,那么在线程A和B之间有i数据争用。根据__sync_lock_test_and_set__sync_lock_release的定义,你应该在使用sync_lock之后使用release。

对于参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM