该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_{};
};
注意:我知道 Stack Overflow 上有类似的问题,但我找不到明确回答这个问题的问题。