这是最近gcc手册中有关原子操作支持类型的引用。
四个非算术函数(加载,存储,交换和比较 所有人都有一个通用版本。这个通用版本 适用于任何数据类型。如果数据类型大小映射到其中一个 可以具有无锁支持的整体尺寸,通用版本 利用无锁内置功能。否则外部呼叫 留待在运行时解决。这个外部呼叫是一样的 格式添加了'size_t'参数作为第一个插入 参数,指示要指向的对象的大小。所有 对象必须大小相同。
原始文件在gcc 4.8.1。我假设硬件只能在简单的32,64和偶然的128位类型上执行原子操作。那么,这些带有指针的函数的通用版本会发生什么?只有对指针的访问实际上可以是原子的,对吗?
另一个相关问题是这些原子如何在像java一样的语言中工作,其中所有东西都是盒装的?原子地访问什么,值或参考?
答案 0 :(得分:1)
有人提到,对于泛型类型,使用了锁。