AtomicPointer 简介
AtomicPointer 是 leveldb 提供的一个原子指针操作类,使用了基于内存屏障的同步访问机制,这比用锁和信号量的效率要高。
源文件位置:leveldb/port/atomic_pointer.h
它的实现主要分为两种:
(一)利用std::atomic实现AtomicPointer
std::atomic对int, char, bool等数据结构进行原子性封装,在多线程环境中,对std::atomic对象的访问不会造成竞争-冒险。利用std::atomic可实现数据结构的无锁设计。(对于std::atomic的详细分析可以参见我的c++11分类里的C++11开发中的Atomic原子操作)
class AtomicPointer {
private:
std::atomic<void*> rep_;
public:
AtomicPointer() { }
explicit AtomicPointer(void* v) : rep_(v) { }
// 使用内存屏障的读操作,即同