【发布时间】:2020-07-02 14:43:00
【问题描述】:
我知道那里列出的容器线程安全主题: https://en.cppreference.com/w/cpp/container
但我想知道:我可以同时使用非常量成员函数和常量成员函数而不阻塞(互斥体)吗? 更具体:
- 我可以同时使用 std::vector::push_back 和 std::vector::size 吗?
- 我可以同时使用 std::set::insert 和 std::set::size 吗?
这通常没有实际意义,但我不需要我将使用的确切大小结果,我只需要一个 valid 在我调用它时的结果.
附:我的疑虑来自那里:https://www.cplusplus.com/reference/set/set/insert/ 他们说 std::set::insert 的地方
同时访问现有元素是安全的
所以也许获取容器的大小也是安全的。
【问题讨论】:
-
“我不需要我将使用的确切尺寸结果,我只需要在我调用它时的有效结果” - 为了使其工作,尺寸需要在内部原子的,它不是。这与一个线程写入另一个线程读取的任何普通变量相同。
标签: c++11 concurrency stl