gpt4 book ai didi

c++ - Herb Sutters 如何监控类?

转载 作者:行者123 更新时间:2023-12-01 13:42:36 25 4
gpt4 key购买 nike

我试图了解 Herb Sutter 在 C++ 和 Beyond 2012 上展示的监视器类:

template<typename T>
class monitor {
private:
mutable T t;
mutable std::mutex m;

public:
monitor(T t_ = T{}) : t{ t_ } {}
template<typename F>
auto operator()(F f) const -> decltype(f(t))
{
std::lock_guard<std::mutex> _{ m }; return f(t);
}
};

我设法创建了一个以更老式和更简单(至少对我而言)的方式做同样事情的类:
template<typename T>
class MyMonitor {
public:
MyMonitor() { t = T(); }

template<typename F>
auto callFunc(F f) {
std::lock_guard<std::mutex> lock(m);
return f(t);
}

private:
T t;
std::mutex m;
};

Herb Sutters 的代码在哪些方面比我的好?

最佳答案

In which ways are Herb Sutters code better than mine?


  • 您的 T应该是默认的可构造和可分配的。
  • 在 Herb Sutters 代码中,T应该是可复制构造的。
  • Herb Sutters 代码允许初始化成员。
  • 您的 operator ()不处理引用。
  • 关于c++ - Herb Sutters 如何监控类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60522330/

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