Vik*_*ehr 9 c++ destructor thread-safety race-condition stdmutex
是get_a()功能安全的比赛条件或者我需要明确地复制str_在get_b()为了有一个线程安全的功能?
class Class {
public:
auto get_a() -> std::string {
auto&& guard = std::lock_guard{mutex_};
return str_;
}
auto get_b() -> std::string {
auto&& guard = std::lock_guard{mutex_};
auto str = str_;
return str;
}
private:
std::mutex mutex_{};
std::string str_{};
};
Run Code Online (Sandbox Code Playgroud)
注意:我知道Stack Overflow上有类似的问题,但我找不到明确回答这个问题的问题.
Rak*_*111 11
调用结果的复制初始化在
return语句的操作数建立的全表达式结束时临时销毁之前被排序,而该语句的操作数又在块的局部变量被破坏之前被排序.该return声明.
这意味着以下顺序发生:
所以,我们可以推断这get_a是完全安全的.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |