深入浅出dpdk: 同步充斥机制

本文更新于 2018.09.28

// 虽然有多核并发与指令并行, 但数据同步有时候不可避免.

原子锁

CAS操作, CMPXCHG指令

内存屏障, 编译器屏障, dpdk内存屏障与原子操作实现.

读写锁

读写锁相比自旋锁能提高并发性, 它有以下特点: 同一时刻,

  • 允许多个线程读
  • 读/写互斥

即当有线程持有写锁后, 其他线程不能持有读/写锁; 而当有线程持有读锁后, 其他线程不能持有写锁, 但可以持有读锁. 读写自旋锁主要用于比较短小的代码片断, 线程等待期间不应该进入睡眠状态, 因为睡眠/唤醒操作相当耗时.

dpdk读写锁实现.

自旋锁

自旋锁与互斥锁异同, 自旋锁的缺点.

dpdk自旋锁实现.

无锁机制

无锁

dpdk无锁环形缓冲区实现