c++ - Vector[]操作(只读)线程安全
问题描述
作为对象初始化的一部分,我创建了一个向量并填充了数据。初始化后向量不会被修改。向量的声明是
std::vector<AnalyticalChuckRing_t> m_analyticalRings;
我们将调用GroupCirclesByRing
从多个异步任务命名的方法。以下代码行在此方法中访问向量对象。我几乎可以肯定这些语句不需要保护,因为它不会修改对象。我在哪里可以找到确保不需要线程同步的文档?
auto GetRingAndAngle = [=](const CPoint& point)
{
double dDistance = DistanceFromOrigin(point);
double dAngle{ 0.0 };
for (int nRing = 1; nRing <= TotalRings; ++nRing)
{
if (abs(dDistance - m_analyticalRings[nRing].dRadius) < 3 )
{
dAngle = atan2((resultRings[0][0].center.m_dY - point.m_dY), (point.m_dX - resultRings[0][0].center.m_dX));
// Convert angle to range [0 : 2 PI]
dAngle = (dAngle < 0) ? (2 * M_PI + dAngle) : dAngle;
return make_tuple(nRing, dAngle);
}
}
return make_tuple(InvalidRingNo, dAngle);
};
解决方案
我在哪里可以找到确保不需要线程同步的文档?
那将是 C++ 标准。草稿可在https://github.com/cplusplus/draft公开获得
看看像 [intro.races] 这样的部分。
推荐阅读
- c# - 将用户输入更新到基于 C# 服务的数据库中(使用文本框、MonthCalendars 和 Comboboxes)
- mongodb - Mongod.service 无法启动
- javascript - 拦截器中的 axois react-keycloak/web 令牌
- c# - 条目包含 0 而不是什么都没有
- python-3.x - 如果以 CSV 格式存储,如何将 \n 作为文本的一部分读取
- coreldraw - Coreldraw 单独的矩形到不同的大小
- css - 使用 flex-start 和 flex wrap 上的 align-item 删除 css flex-box 中的间隙
- mysql - 多表连接的Mysql查询优化
- sql - Sql Synapse 如何更新最新记录
- python - 在 python 中查找 SHA512 的 8 位哈希函数的冲突