文件名称:queue_atomic:使用C ++ 11原子的多生产者多消费者队列模板
文件大小:8KB
文件格式:ZIP
更新时间:2024-05-17 06:38:14
queue atomic cplusplus-11 C++
queue_atomic 使用C ++ 11原子的多生产者多消费者队列模板。 通过将单调递增的版本号打包到队列的前后偏移量中,解决了ABA问题并实现了两阶段有序更新。 通过检查预期的版本计数器在打包的前后偏移量中是否可见来检测到有争议的情况。 在更新期间,将根据偏移量中包含的版本检查版本计数器,如果偏移量是最新的,则版本计数器会自动增加,数据会被存储(push_back)或检索到(pop_front),最后阶段则是前端或back offset会自动使用新版本和offset进行更新。 仅当版本计数器与打包到偏移量中的版本匹配时,数据才在另一个线程中可见。 在通常情况下,前后偏移始终会增加,并且缓冲区偏移是根据队列大小计算的模数。 在单个生产者单个消费者的情况下,queue_atomic是完全无锁的 queue_atomic可以在多生产者多消费者模式下使用,但是当有竞争时它将旋转调用s
【文件预览】:
queue_atomic-master
----README.md(4KB)
----rdtsc.h(876B)
----queue_std_mutex.h(1KB)
----test_queue.cc(13KB)
----queue_atomic.h(13KB)
----Makefile(122B)