【高并发】多线程之无锁队列
队列操作模型
(1)单生产者——单消费者
(2)多生产者——单消费者
(3)单生产者——多消费者
(4)多生产者——多消费者
3、队列数据定长与变长
(1)队列数据定长
(2)队列数据变长
并发无锁处理
(1)单生产者——单消费者模型
此种场景不需要加锁,定长的可以通过读指针和写指针进行控制队列操作,变长的通过读指针、写指针、结束指针控制操作。具体实现可以参考linux内核提供的kfifo的实现。可以参考:
(2)(一)多对多(一)模型
正常逻辑操作是要对队列操作进行加锁处理。加锁的性能开销较大,一般采用无锁实现。无锁实现原理是CAS、FAA等机制。定长的可以参考:
变长的可以参考intel dpdk提供的rte_ring的实现。
队列操作模型 (1)单生产者——单消费者 (2)多生产者——单消费者 (3)单生产者——多消费者 (4)多生产者——多消费者 3、队列数据定长与变长 (1)队列数据定长 (2)队列数据变长 并发无锁处理 (1)单生产者——单消费者模型 此种场景不需要加锁,定长的可以通过读指针和写指针进行控制队列操作,变长的通过读指针、写指针、结束指针控制操作。具体实现可以参考linux内核提供的kfifo的实现。可以参考: (2)(一)多对多(一)模型 正常逻辑操作是要对队列操作进行加锁处理。加锁的性能开销较大,一般采用无锁实现。无锁实现原理是CAS、FAA等机制。定长的可以参考: 变长的可以参考intel dpdk提供的rte_ring的实现。上一篇:
通过多线程提高代码的执行效率例子
下一篇:
小程序下单订单有效时间设置方法