1//
2// detail/mutex.hpp
3// ~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef BOOST_ASIO_DETAIL_MUTEX_HPP
12#define BOOST_ASIO_DETAIL_MUTEX_HPP
13
14#if defined(_MSC_VER) && (_MSC_VER >= 1200)
15# pragma once
16#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
18#include <boost/asio/detail/config.hpp>
19
20#if !defined(BOOST_ASIO_HAS_THREADS)
21# include <boost/asio/detail/null_mutex.hpp>
22#elif defined(BOOST_ASIO_WINDOWS)
23# include <boost/asio/detail/win_mutex.hpp>
24#elif defined(BOOST_ASIO_HAS_PTHREADS)
25# include <boost/asio/detail/posix_mutex.hpp>
26#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
27# include <boost/asio/detail/std_mutex.hpp>
28#else
29# error Only Windows, POSIX and std::mutex are supported!
30#endif
31
32namespace boost {
33namespace asio {
34namespace detail {
35
36#if !defined(BOOST_ASIO_HAS_THREADS)
37typedef null_mutex mutex;
38#elif defined(BOOST_ASIO_WINDOWS)
39typedef win_mutex mutex;
40#elif defined(BOOST_ASIO_HAS_PTHREADS)
41typedef posix_mutex mutex;
42#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
43typedef std_mutex mutex;
44#endif
45
46} // namespace detail
47} // namespace asio
48} // namespace boost
49
50#endif // BOOST_ASIO_DETAIL_MUTEX_HPP
51