Assembly 什么';这是什么指示?
请注意,这不会发出代码,因此它不是通用内存屏障。它确实防止GCC在语句中对内存访问进行重新排序,但并不阻止CPU这样做。因此,它只在本身不重新安排内存访问顺序的CPU上起到屏障的作用。@John R.Strohm,我不理解那篇文章:(@Nemo,什么时候需要它?当你必须了解内存访问顺序以证明正确性时使用它。只适用于并发编程(例如线程)。你知道如何使用互斥锁吗?嗯,内存屏障是实现互斥锁所需的工具。@Nemo,简单地说,内存屏障主要是禁用cpu缓存并再次从内存中读取,对吧?请注意,这不会发出代码,所以它不是通用内存屏障。它确实阻止GCC在多个内存中重新排序内存访问声明,但它并不能阻止CPU这样做。因此,它只在CPU上起到屏障的作用,CPU本身不会重新排序内存访问。@John R.Strohm,我不理解那篇文章,不过:(@Nemo,什么时候需要它?当你需要知道一些关于内存访问顺序的信息以证明正确性时使用它。仅适用于并发编程(例如线程).你知道如何使用互斥锁吗?嗯,内存屏障是实现互斥锁所需的工具。@Nemo,简单地说,内存屏障主要是禁用cpu缓存并再次从内存读取,对吗?Assembly 什么';这是什么指示?,assembly,Assembly,请注意,这不会发出代码,因此它不是通用内存屏障。它确实防止GCC在语句中对内存访问进行重新排序,但并不阻止CPU这样做。因此,它只在本身不重新安排内存访问顺序的CPU上起到屏障的作用。@John R.Strohm,我不理解那篇文章:(@Nemo,什么时候需要它?当你必须了解内存访问顺序以证明正确性时使用它。只适用于并发编程(例如线程)。你知道如何使用互斥锁吗?嗯,内存屏障是实现互斥锁所需的工具。@Nemo,简单地说,内存屏障主要是禁用cpu缓存并再次从内存中读取,对吧?请注意,这不会发出代码,所
#define ngx_memory_barrier() __asm__ volatile ("" ::: "memory")