【发布时间】:2013-04-25 18:53:16
【问题描述】:
考虑一个包含以下向量的类:
std::vector<std::tuple<double, double, double> > _data;
以及以下成员函数:
inline double second(const unsigned int i) const
{
return std::get<1>(_data[i]);
}
我是否保证这个函数是线程安全的(注意我返回了一个 double 的副本)?
如果不是,这个函数的线程安全版本是什么?
【问题讨论】:
-
只要不写入 _data[i],它就是线程安全的
-
如果你的向量可以被另一个线程修改,那么没有某种同步是不安全的。
-
@yngum 我想你的意思是
_data,而不是_data[i]
标签: c++ c++11 concurrency thread-safety stdvector