Commit d6c20069 authored by Davis King's avatar Davis King

Added auto_mutex::unlock()

parent 213b0ff1
...@@ -63,15 +63,29 @@ namespace dlib ...@@ -63,15 +63,29 @@ namespace dlib
rw->lock(); rw->lock();
} }
~auto_mutex ( void unlock()
)
{ {
if (m != 0) if (m != 0)
{
m->unlock(); m->unlock();
m = 0;
}
else if (r != 0) else if (r != 0)
{
r->unlock(); r->unlock();
else r = 0;
}
else if (rw != 0)
{
rw->unlock(); rw->unlock();
rw = 0;
}
}
~auto_mutex (
)
{
unlock();
} }
private: private:
......
...@@ -52,12 +52,21 @@ namespace dlib ...@@ -52,12 +52,21 @@ namespace dlib
- m will be locked via m.lock() (i.e. a write lock will be obtained) - m will be locked via m.lock() (i.e. a write lock will be obtained)
!*/ !*/
void unlock(
);
/*!
ensures
- if (unlock() has not already been called) then
- The mutex associated with *this has been unlocked. This is useful if
you want to unlock a mutex before the auto_mutex destructor executes.
!*/
~auto_mutex ( ~auto_mutex (
); );
/*! /*!
ensures ensures
- all resources allocated by *this have been freed - all resources allocated by *this have been freed
- the mutex associated with *this has been unlocked - calls unlock()
!*/ !*/
private: private:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment