## 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 {

      // public member functions
      multi_thread_model();
      multi_thread_model(multi_thread_model const &);
      multi_thread_model & operator=(multi_thread_model const &) noexcept;
      multi_thread_model(multi_thread_model &&);
      multi_thread_model & operator=(multi_thread_model &&) noexcept;
      void lock_shared() const;
      bool try_lock_shared() const;
      template<typename TimeT> bool timed_lock_shared(TimeT const &) const;
      void unlock_shared() const noexcept;
      void lock() const;
      bool try_lock() const;
      template<typename TimeT> bool timed_lock(TimeT const &) const;
      void unlock() const noexcept;
      void lock_upgrade() const;
      bool try_lock_upgrade() const;
      template<typename TimeT> bool timed_lock_upgrade(TimeT const &) const;
      void unlock_upgrade() const noexcept;
      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 &) noexcept;
    };

## Description

### `multi_thread_model` public member functions

1.     multi_thread_model();

2.     multi_thread_model(multi_thread_model const &);

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

4.     multi_thread_model(multi_thread_model &&);

5.     multi_thread_model & operator=(multi_thread_model &&) noexcept;

6.     void lock_shared() const;

7.     bool try_lock_shared() const;

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

9.     void unlock_shared() const noexcept;

10.     void lock() const;

11.     bool try_lock() const;

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

13.     void unlock() const noexcept;

14.     void lock_upgrade() const;

15.     bool try_lock_upgrade() const;

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

17.     void unlock_upgrade() const noexcept;

18.     void unlock_upgrade_and_lock() const;

19.     void unlock_and_lock_upgrade() const;

20.     void unlock_and_lock_shared() const;

21.     void unlock_upgrade_and_lock_shared() const;

22.     void swap(multi_thread_model &) noexcept;