asm volatile("":: :"memory")
часто используется в качестве барьера памяти (например, как видно из макроса barrier
ядра Linux).
Это похоже на то, что делает встроенная в GCC __sync_synchronize
.
Эти два похожи?
Если нет, каковы различия, и когда один из них будет использоваться над другим?