香草薩特描述的實施模板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