香草萨特描述的实施模板Monitor类的 “C++和2012年之后:香草萨特 - C++并发”:监视器<T> C++ 11和C++ 03中的类实现?
template<class T> class monitor {
private:
mutable T t;
mutable std::mutex m;
public:
monitor(T t_) : t(t_) { }
template<typename F>
auto operator()(F f) const -> decltype(f(t))
{ std::lock_guard<mutex> hold{m}; return f(t); }
};
我想换我现有的类记录仪:
Logger logger;
monitor<Logger> synchronizedLogger(logger) ;
我有两个问题。 为什么此代码不能在Visual Studio 2012中用C++ 11编译? 编译器说“'调试':不是'监视器'的成员,其中调试是Logger类的一种方法。
如何用C++ 03编译器使用Boost库实现相同的监视器模板类。
你是否正在调用'synchronizedLogger.Debug()'? – juanchopanza 2013-03-15 14:50:46
我看不到任何使用'Debug'命名的代码,所以很难说明它的含义 – PlasmaHH 2013-03-15 14:56:17
作为一个相关说明,我认为Sutter说监视器是一种反模式,然后呈现一个解决方案更好我拼凑了一个该解决方案的工作版本[在这里](http://juanchopanzacpp.wordpress.com/2013/03/01/concurrent-object-wrapper-c11/),但它完全是C++ 11。 – juanchopanza 2013-03-15 15:06:36