// Copyright (C) 2003 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #ifndef DLIB_SYNC_EXTENSION_KERNEl_1_ #define DLIB_SYNC_EXTENSION_KERNEl_1_ #include "../threads.h" #include "../algs.h" #include "sync_extension_kernel_abstract.h" namespace dlib { template < typename base > class sync_extension_kernel_1 : public base { rmutex m; rsignaler s; public: sync_extension_kernel_1 () : s(m) {} template < typename T > sync_extension_kernel_1 (const T& one) : base(one),s(m) {} template < typename T, typename U > sync_extension_kernel_1 (const T& one, const U& two) : base(one,two),s(m) {} const rmutex& get_mutex( ) const { return m; } void lock ( ) const { m.lock(); } void unlock ( ) const { m.unlock(); } void wait ( ) const { s.wait(); } bool wait_or_timeout ( unsigned long milliseconds ) const { return s.wait_or_timeout(milliseconds); } void broadcast ( ) const { s.broadcast(); } void signal ( ) const { s.signal(); } }; template < typename base > inline void swap ( sync_extension_kernel_1<base>& a, sync_extension_kernel_1<base>& b ) { a.swap(b); } } #endif // DLIB_SYNC_EXTENSION_KERNEl_1_