我想知道我是否可以在不锁定 mips cpu 的情况下读取或写入共享 int 值(尤其是 Amazon 或 Danube)。我的意思是,如果这样的读取或写入是原子的(其他线程不能中断它们)。需要明确的是 - 我不想阻止线程之间的竞争,但我关心 int 值本身是否没有损坏。
假设编译器将所有 int 对齐到 cpu 字的边界,这应该是可能的。我使用 gcc (g++)。测试还表明它似乎工作正常。但也许有人肯定知道这一点?
使用 gcc 的内置原子操作,如果不支持它们,您将收到警告:http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html
看起来(至少)在硬件上可以进行加法/减法和测试的组合:http://rswiki.csie.org/lxr/http/source/include/asm-mips/atomic.h http://rswiki.csie.org/lxr/http/source/include/asm-mips/atomic.h
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)