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