我有以下类包装了一个原子整数向量(std::vector< std::atomic_int >
)
向量在对象构造时的大小是正确的,并且不会改变大小。有用于获取、设置原子整数的常用访问器和修改器,但没有警卫/互斥锁。
class MyList
{
std::vector< std::atomic_int > collection_;
static MyList myList_;
public:
MyList() : collection_( MAX_SIZE, 0 ) {}
static MyList& getMyList() { return myList_; }
void set( size_t idx, int val )
{
collection_[idx].store( val, std::memory_order_relaxed );
}
int get( size_t idx ) const
{
return collection_[idx].load( std::memory_order_relaxed );
}
};
我想怀疑这可能不是线程安全的(它目前在单线程模型中运行没有问题),但会欣赏任何观点。我想我主要关心的是无人看守的集合的线程安全,而不是它的元素。