众多周知,对于多线程访问同一段内存,无疑是要加上锁来控制,但是如果面对更高需求的并发 ,锁就成了并发量增加的瓶颈,下面这个图简单的实现了一种无锁任务处理系统,
首先解释使用的模式
单生产 ----------> 队列 ----------> 多线程,但单消费者
如以下图示:(手绘图,比较懒,懒得用visol)
,receiver相当于从各个线程收的数据,其实是多个线程收的,但是 最终通过一个单线程将各个线程上收的数据汇总按 自生成ID,汇总并分成10个内存池
task1_pool---------task10_pool ,然后对每一个pool启动一个线程去取,这样push和pop对于每一个taskpool都相当于单线程存和单线程取因此,不加锁就可以,
增加了并发量。