3 #ifndef CDSLIB_SYNC_INJECTED_MONITOR_H
4 #define CDSLIB_SYNC_INJECTED_MONITOR_H
6 namespace cds { namespace sync {
8 /// Monitor that injects a lock as a member into a class
11 - Lock - lock type like \p std::mutex or \p cds::sync::spin
13 template <typename Lock>
14 class injected_monitor
17 typedef Lock lock_type;
20 struct wrapper : public T
23 mutable lock_type m_Lock;
37 void lock( T const& p ) const
43 void unlock( T const& p ) const
54 scoped_lock( injected_monitor const&, T const& p )
66 }} // namespace cds::sync
68 #endif // #ifndef CDSLIB_SYNC_INJECTED_MONITOR_H