R..*_*R.. 6 c assembly powerpc atomic
GCC__sync_val_compare_and_swap在 PowerPC[64] 上实现为:
sync
1: lwarx 9,0,3
cmpw 0,9,4
bne 0,2f
stwcx. 5,0,3
bne 0,1b
2: isync
Run Code Online (Sandbox Code Playgroud)
__sync_*内置函数的GCC 文档:
在大多数情况下,这些内置函数被认为是一个完整的屏障。也就是说,无论是向前还是向后,都不会在整个操作中移动内存操作数。此外,将根据需要发出指令,以防止处理器推测整个操作的负载以及在操作之后将存储排队。
然而,在最后使用isync而不是sync让我感到困扰。这实际上是一个完整的障碍吗?或者:
是否可以在__sync_val_compare_and_swap未能看到在产生__sync_val_compare_and_swap加载值的存储之前执行的存储之后执行加载?
是否__sync_val_compare_and_swap可以在其他线程看到__sync_val_compare_and_swap?存储的值之前执行存储?
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |