68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
// 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_
|
|
|