| Home | Libraries | People | FAQ | More

## Class interprocess_recursive_mutex

boost::interprocess::interprocess_recursive_mutex

## Synopsis

    // In header: <boost/interprocess/sync/interprocess_recursive_mutex.hpp>

    class interprocess_recursive_mutex {
    public:
      // construct/copy/destruct
      interprocess_recursive_mutex();
      ~interprocess_recursive_mutex();

      // public member functions
      void lock();
      bool try_lock();
      bool timed_lock(const boost::posix_time::ptime &);
      void unlock();
    };

## Description

Wraps a interprocess_mutex that can be placed in shared memory and can be shared between processes. Allows several locking calls by the same process. Allows timed lock tries

### `interprocess_recursive_mutex` public construct/copy/destruct

1.     interprocess_recursive_mutex();

   Constructor. Throws `interprocess_exception` on error.

2.     ~interprocess_recursive_mutex();

   Destructor. If any process uses the mutex after the destructor is called the result is undefined. Does not throw.

### `interprocess_recursive_mutex` public member functions

1.     void lock();

   Effects: The calling thread tries to obtain ownership of the mutex, and if another thread has ownership of the mutex, it waits until it can obtain the ownership. If a thread takes ownership of the mutex the mutex must be unlocked by the same mutex. The mutex must be unlocked the same number of times it is locked. Throws: `interprocess_exception` on error.

2.     bool try_lock();

   Tries to lock the `interprocess_mutex`, returns false when `interprocess_mutex` is already locked, returns true when success. The mutex must be unlocked the same number of times it is locked. Throws: `interprocess_exception` if a severe error is found

3.     bool timed_lock(const boost::posix_time::ptime & abs_time);

   Tries to lock the `interprocess_mutex`, if `interprocess_mutex` can't be locked before abs_time time, returns false. The mutex must be unlocked the same number of times it is locked. Throws: `interprocess_exception` if a severe error is found

4.     void unlock();

   Effects: The calling thread releases the exclusive ownership of the mutex. If the mutex supports recursive locking, the mutex must be unlocked the same number of times it is locked. Throws: `interprocess_exception` on error.