以非线程安全的方式调用vector::size/map::size有什么含义?
据我所知,map::sizeand vector::size, whileconst不能保证线程安全。vector我发现的一种实现如下所示:
size_type size() const _NOEXCEPT
{return static_cast<size_type>(this->__end_ - this->__begin_);}
如果我以非线程安全的方式调用此方法,会出现什么问题?只是返回的结果可能会过时几毫秒,或者它可能会破坏其他线程修改集合的尝试或以其他方式冒严重问题的风险?
回答
如果我以非线程安全的方式调用此方法,会出现什么问题?
如果在没有同步的情况下在另一个线程中修改向量,则程序的行为将是未定义的。什么事情都可能发生。
THE END
二维码