这用在Windows UI线程的,UI更新没太高频率,后来的版本我在循环中否定分支加了
std::this_thread::yield();
来主动让出执行周期。
get方法的上层调用者是copy的,不是引用,所以占用时间很短,队列长度足够时不会被二次覆盖。返回引用是考虑到某些需要0copy的使用情况,生命周期太长的当然需要copy。
另外就是我通常不会贴一点问题没有的代码,这样可以看看别人是不是仔细读了。
【 在 z16166 的大作中提到: 】
: 这个代码,gemini 2.5 pro 说有如下问题:
: 这个 AtomicRingBuffer 的实现存在严重的数据竞争缺陷,不应该在生产环境中使用。
: 致命缺陷: get() 方法返回 const T&,在生产者重用缓冲区槽位时,会导致消费者访问被修改或已释放的内存,引发未定义行为。
: ...................
--
修改:poocp FROM 171.221.52.*
FROM 171.221.52.*