gpt4 book ai didi

c++ - 同时修改 std::valarray 的元素是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:29 27 4
gpt4 key购买 nike

如果我没理解错的话,从 C++11 开始,同时调用容器的 const 成员函数并修改容器的元素是安全的,只要容器本身不作为操作的一部分被修改(从例如 cppreference.com 中有关线程安全的表格中可以看出)。由于 std::valarray 未在(草案)标准的容器部分中列出,我不确定线程​​安全是否也适用于它。换句话说,

  • 同时从 std::valarray 中读取是否安全(特别是通过对切片使用 operator[])?
  • 如果对 T 的操作是安全的,那么同时修改 std::valarray 的元素是否安全?

我想将 std::valarray 用于将使用多个线程填充的多维数字数组。

最佳答案

如果我没看错你的问题,[res.on.data.races]保护不同的切片不参与

下的数据竞争

A C++ standard library function shall not directly or indirectly access objects accessible by threads other than the current thread unless the objects are accessed directly or indirectly via the function's arguments, including this.

[container.requirements.dataraces]为不同元素的修改添加额外的保护,而这正是 valarray 所缺乏的。

关于c++ - 同时修改 std::valarray<T> 的元素是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51138025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com