我们编写的C/C++代码在处理器上实际的执行顺序和其在源码中的顺序可能并不相同。编译器会通过指令重排优化编译效果,CPU也会通过乱序执行优化执行效率。本文将介绍编译时的内存重排。
我们编写的C/C++代码在处理器上实际的执行顺序和其在源码中的顺序可能并不相同。编译器会通过指令重排优化编译效果,CPU也会通过乱序执行优化执行效率。本文将介绍编译时的内存重排。
在阅读内核源码spin_lock
的实现时,发现有大量关于lock-free编程的知识,如smp_cond_load_relaxed
、atomic_try_cmpxchg_acquire
的实现。延展阅读,发现了这些涉及到memory order、atomic、cache consistency等知识点。经过google,我发现Preshing on Programming这个博客对lock-free的方方面面介绍的较为详细,并且作者将这些知识点在Mintomic(C/C++ lock-free programming API)项目中付诸实践。
2 / 2