CLASS INTER(3)

NAME
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(const interprocess_recursive_mutex &);
  interprocess_recursive_mutex();
  interprocess_recursive_mutex&
  operator=(const interprocess_recursive_mutex &);
  ~interprocess_recursive_mutex();
  // public member functions
  void lock();
  bool try_lock();
  bool timed_lock(const boost::posix_time::ptime &);
  void unlock();
  pthread_mutex_t m_mut;  // @ private:
};

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(const interprocess_recursive_mutex &);
    @ //Non-copyable .RE

        2.

        interprocess_recursive_mutex();

        Constructor. Throws interprocess_exception on error.

        3.

        interprocess_recursive_mutex& operator=(const interprocess_recursive_mutex &);

        4.

        ~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.