1//
2// detail/static_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_STATIC_MUTEX_HPP
12#define BOOST_ASIO_DETAIL_STATIC_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_static_mutex.hpp>
22#elif defined(BOOST_ASIO_WINDOWS)
23# include <boost/asio/detail/win_static_mutex.hpp>
24#elif defined(BOOST_ASIO_HAS_PTHREADS)
25# include <boost/asio/detail/posix_static_mutex.hpp>
26#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
27# include <boost/asio/detail/std_static_mutex.hpp>
28#else
29# error Only Windows and POSIX are supported!
30#endif
31
32namespace boost {
33namespace asio {
34namespace detail {
35
36#if !defined(BOOST_ASIO_HAS_THREADS)
37typedef null_static_mutex static_mutex;
38# define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_NULL_STATIC_MUTEX_INIT
39#elif defined(BOOST_ASIO_WINDOWS)
40typedef win_static_mutex static_mutex;
41# define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_WIN_STATIC_MUTEX_INIT
42#elif defined(BOOST_ASIO_HAS_PTHREADS)
43typedef posix_static_mutex static_mutex;
44# define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_POSIX_STATIC_MUTEX_INIT
45#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
46typedef std_static_mutex static_mutex;
47# define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_STD_STATIC_MUTEX_INIT
48#endif
49
50} // namespace detail
51} // namespace asio
52} // namespace boost
53
54#endif // BOOST_ASIO_DETAIL_STATIC_MUTEX_HPP
55

source code of boost/boost/asio/detail/static_mutex.hpp