## Struct template multi_thread_model

boost::log::sources::multi_thread_model — Multi-thread locking model with maximum locking capabilities.

## Synopsis

    // In header: <boost/log/sources/threading_models.hpp>

    template<typename MutexT>
    struct multi_thread_model {
      // construct/copy/destruct
      multi_thread_model();
      multi_thread_model(multi_thread_model const &);
      multi_thread_model & operator=(multi_thread_model const &);

      // public member functions
      void lock_shared() const;
      bool try_lock_shared() const;
      template<typename TimeT> bool timed_lock_shared(TimeT const &) const;
      void unlock_shared() const;
      void lock() const;
      bool try_lock() const;
      template<typename TimeT> bool timed_lock(TimeT const &) const;
      void unlock() const;
      void lock_upgrade() const;
      bool try_lock_upgrade() const;
      template<typename TimeT> bool timed_lock_upgrade(TimeT const &) const;
      void unlock_upgrade() const;
      void unlock_upgrade_and_lock() const;
      void unlock_and_lock_upgrade() const;
      void unlock_and_lock_shared() const;
      void unlock_upgrade_and_lock_shared() const;
      void swap(multi_thread_model &);
    };

## Description

### `multi_thread_model` public construct/copy/destruct

1.     multi_thread_model();

2.     multi_thread_model(multi_thread_model const &);

3.     multi_thread_model & operator=(multi_thread_model const &);

### `multi_thread_model` public member functions

1.     void lock_shared() const;

2.     bool try_lock_shared() const;

3.     template<typename TimeT> bool timed_lock_shared(TimeT const & t) const;

4.     void unlock_shared() const;

5.     void lock() const;

6.     bool try_lock() const;

7.     template<typename TimeT> bool timed_lock(TimeT const & t) const;

8.     void unlock() const;

9.     void lock_upgrade() const;

10.     bool try_lock_upgrade() const;

11.     template<typename TimeT> bool timed_lock_upgrade(TimeT const & t) const;

12.     void unlock_upgrade() const;

13.     void unlock_upgrade_and_lock() const;

14.     void unlock_and_lock_upgrade() const;

15.     void unlock_and_lock_shared() const;

16.     void unlock_upgrade_and_lock_shared() const;

17.     void swap(multi_thread_model &);