summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/threads/auto_mutex_extension.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/threads/auto_mutex_extension.h')
-rw-r--r--ml/dlib/dlib/threads/auto_mutex_extension.h180
1 files changed, 0 insertions, 180 deletions
diff --git a/ml/dlib/dlib/threads/auto_mutex_extension.h b/ml/dlib/dlib/threads/auto_mutex_extension.h
deleted file mode 100644
index 595c1b176..000000000
--- a/ml/dlib/dlib/threads/auto_mutex_extension.h
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright (C) 2005 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_AUTO_MUTEX_EXTENSIOn_
-#define DLIB_AUTO_MUTEX_EXTENSIOn_
-
-#include "threads_kernel.h"
-#include "rmutex_extension.h"
-#include "read_write_mutex_extension.h"
-#include "auto_mutex_extension_abstract.h"
-
-namespace dlib
-{
-
-// ----------------------------------------------------------------------------------------
-
- class auto_mutex
- {
- /*!
- INITIAL VALUE
- - if (m != 0) then
- - the mutex pointed to by m is locked
- - if (r != 0) then
- - the mutex pointed to by r is locked
- - if (rw != 0) then
- - the mutex pointed to by rw is locked
- - exactly one of r, m, or rw is not 0.
-
- CONVENTION
- - if (m != 0) then
- - the mutex pointed to by m is locked
- - if (r != 0) then
- - the mutex pointed to by r is locked
- - if (rw != 0) then
- - the mutex pointed to by rw is locked
- - exactly one of r, m, or rw is not 0.
- !*/
- public:
-
- explicit auto_mutex (
- const mutex& m_
- ) : m(&m_),
- r(0),
- rw(0)
- {
- m->lock();
- }
-
- explicit auto_mutex (
- const rmutex& r_
- ) : m(0),
- r(&r_),
- rw(0)
- {
- r->lock();
- }
-
- explicit auto_mutex (
- const read_write_mutex& rw_
- ) : m(0),
- r(0),
- rw(&rw_)
- {
- rw->lock();
- }
-
- void unlock()
- {
- if (m != 0)
- {
- m->unlock();
- m = 0;
- }
- else if (r != 0)
- {
- r->unlock();
- r = 0;
- }
- else if (rw != 0)
- {
- rw->unlock();
- rw = 0;
- }
- }
-
- ~auto_mutex (
- )
- {
- unlock();
- }
-
- private:
-
- const mutex* m;
- const rmutex* r;
- const read_write_mutex* rw;
-
- // restricted functions
- auto_mutex(auto_mutex&); // copy constructor
- auto_mutex& operator=(auto_mutex&); // assignment operator
- };
-
-// ----------------------------------------------------------------------------------------
-
- class auto_mutex_readonly
- {
- public:
-
- explicit auto_mutex_readonly (
- const read_write_mutex& rw_
- ) : rw(rw_), _has_write_lock(false), _has_read_lock(true)
- {
- rw.lock_readonly();
- }
-
- ~auto_mutex_readonly (
- )
- {
- unlock();
- }
-
- void lock_readonly (
- )
- {
- if (!_has_read_lock)
- {
- unlock();
- rw.lock_readonly();
- _has_read_lock = true;
- }
- }
-
- void lock_write (
- )
- {
- if (!_has_write_lock)
- {
- unlock();
- rw.lock();
- _has_write_lock = true;
- }
- }
-
- void unlock (
- )
- {
- if (_has_write_lock)
- {
- rw.unlock();
- _has_write_lock = false;
- }
- else if (_has_read_lock)
- {
- rw.unlock_readonly();
- _has_read_lock = false;
- }
- }
-
- bool has_read_lock (
- ) { return _has_read_lock; }
-
- bool has_write_lock (
- ) { return _has_write_lock; }
-
- private:
-
- const read_write_mutex& rw;
- bool _has_write_lock;
- bool _has_read_lock;
-
- // restricted functions
- auto_mutex_readonly(auto_mutex_readonly&); // copy constructor
- auto_mutex_readonly& operator=(auto_mutex_readonly&); // assignment operator
- };
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_AUTO_MUTEX_EXTENSIOn_
-