本文用于实现64位的原子操作,主要方式是通过自旋锁来实现原子操作。当然对于指令层面支持64位操作的CPU来说,不需要本文的实现。
共16个自旋锁,每个锁占据一个缓存块大小(L1)。初始化时锁都没有占用。
lock_addr函数,根据传入的64位变量的内存地址,计算1个hash值,使用此值来定位1个自旋锁,用这把锁来保护此64位变量的读写。
本文用于实现64位的原子操作,主要方式是通过自旋锁来实现原子操作。当然对于指令层面支持64位操作的CPU来说,不需要本文的实现。
共16个自旋锁,每个锁占据一个缓存块大小(L1)。初始化时锁都没有占用。
lock_addr函数,根据传入的64位变量的内存地址,计算1个hash值,使用此值来定位1个自旋锁,用这把锁来保护此64位变量的读写。