月度归档:2013年02月

遭遇undefined reference to `__sync_val_compare_and_swap_8`

A:你还在使用atomic.h里头的原子操作么?
B:是啊。
A:你out了,gcc 4.1之后就支持内建原子操作了。

这就是目前linux开发中使用原子操作的真实写照。不过理想是美好的,现实是充满荆棘的…..

昨天开发偶遇undefined reference to __sync_val_compare_and_swap_8',那叫一个心酸。
试变各种技巧无果,只得老老实实的看了看gcc文档http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html

Not all operations are supported by all target processors. If a particular operation cannot be implemented on the target processor, a warning will be generated and a call an external function will be generated. The external function will carry the same name as the builtin, with an additional suffix _n’ where n is the size of the data type.

明白了来龙去脉,但是工作还要继续,幸得网友杰作

over…

============================================
在不支持gcc内建原子操作的情况下,仿照内核原子操作构建出这样的接口也不失为一种方法