atomic_queue
基于带有循环缓冲区的C ++ 14多生产者多消费者
无锁 队列。
这些
队列遵循的主要设计原理是极简主义:原子操作的最基本要求,固定大小的缓冲区,值语义。
这些品质也有局限性:
最大
队列大小必须在编译时或构造时设置。 循环缓冲区以固定缓冲区大小为代价,回避了基于链表的
队列中固有的内存回收问题。 有关更多详细信息,请参见。 固定的缓冲区大小可能没有太大的限制,因为一旦
队列变得大于最大预期大小,这表明存在元素处理速度不够快的问题,并且如果
队列持续增长,它最终可能会消耗所有可用的内存。可能会影响整个系统,而不仅是有问题的过程。 唯一明显的不便之处是,必须对预期或可接受的最大
队列大小进行预先的信封后计算。
没有操作系统阻止推送/弹出功能。 此
队列是为超低延迟方案设计的,使用OS阻塞原语将牺牲一键弹出延迟。 为了获得尽可能低的延迟,人们无法承受OS内核中的阻塞,因为阻塞线程的唤醒延迟约为1-3微秒,而此
队列的往返时间可以低至150纳秒。
超低延迟应用程序仅需此而已。 极简主义带来了回报,请参阅。
可用的容器有:
AtomicQueue原子元素的固定大小的环形缓
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3977.html