首页 > 解决方案 > C++11 List/Set/Vector 原子获取和弹出

问题描述

我想要实现的目标:拥有一组无序数字,我想原子地选择一个随机(或第一个,或其他)元素在同一操作中从集合中删除。

目前,我有:

std::list<int> pool = {1, 2, 3, ...};
int handle = pool.front();
pool.pop_front();

但是,这并不能保证原子性!我曾希望存在这样的事情:

std::list<int> pool = {1, 2, 3, ...};
int handle = pool.pop_front();

我如何实现这一目标?

标签: c++mutexatomic

解决方案


推荐阅读