在某些情况下,调用 try_dequeue 所检索的值的顺序与 enqueue 将值放置的顺序不匹配。
作者: wangxm7237创建于 2025年6月15日更新于 2025年6月16日
调用顺序: 1 个调用 enqueue, 将值 4 插入。 2. 经过 50 毫秒的间隔后, 第二次调用 enqueue, 将值 0 插入。 3. 在不到 1 毫秒的时间内, 第一次调用 try_dequeue, 检索值 0。 4. 在不到 1 毫秒的时间内, 第二次调用 try_dequeue, 检索值 4。 第一次 enqueue 操作 (ImplicitProducer::enqueue) 将值 4 插入到一个实例 (例如, 0x0000007f28001920)。 第二次 enqueue 操作 (ImplicitProducer::enqueue) 将值 0 插入到另一个实例 (例如, 0x0000007f2c0103a0)。 第一次 try_dequeue 操作根据"最佳"评分机制选择实例 (0x0000007f2c0103a0) 并检索值 0。 第二次 try_dequeue 操作根据相同机制选择实例 (0x0000007f28001920) 并检索值 4。
内容来源: cameron314/concurrentqueue