dlib C++ Library - auto_mutex_extension_abstract.h

    // Copyright (C) 2005  Davis E. King (davisking@users.sourceforge.net)
    // License: Boost Software License   See LICENSE.txt for the full license.
    #undef DLIB_AUTO_MUTEX_EXTENSIOn_ABSTRACT_
    #ifdef DLIB_AUTO_MUTEX_EXTENSIOn_ABSTRACT_

    #include "threads_kernel_abstract.h"
    #include "rmutex_extension_abstract.h"

    namespace dlib
    {

    // ----------------------------------------------------------------------------------------

        class auto_mutex
        {
            /*!
                INITIAL VALUE
                    The mutex given in the constructor is locked and associated with this
                    object.

                WHAT THIS OBJECT REPRESENTS
                    This object represents a mechanism for automatically locking and unlocking
                    a mutex object.
            !*/
        public:

            auto_mutex (
                const mutex& m
            );
            /*!
                ensures
                    - #*this is properly initialized
                    - m will be locked
            !*/

            auto_mutex (
                const rmutex& m
            );
            /*!
                ensures
                    - #*this is properly initialized
                    - m will be locked
            !*/

            ~auto_mutex (
            );
            /*!
                ensures
                    - all resources allocated by *this have been freed
                    - the mutex associated with *this has been unlocked
            !*/

        private:
            // restricted functions
            auto_mutex(auto_mutex&);        // copy constructor
            auto_mutex& operator=(auto_mutex&);    // assignment operator
        };

    // ----------------------------------------------------------------------------------------

    }

    #endif // DLIB_AUTO_MUTEX_EXTENSIOn_ABSTRACT_