Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / asio / detail / atomic_count.hpp @ 2486

History | View | Annotate | Download (1.4 kB)

1
//
2
// detail/atomic_count.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_ATOMIC_COUNT_HPP
12
#define BOOST_ASIO_DETAIL_ATOMIC_COUNT_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
// Nothing to include.
22
#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)
23
# include <atomic>
24
#else // defined(BOOST_ASIO_HAS_STD_ATOMIC)
25
# include <boost/detail/atomic_count.hpp>
26
#endif // defined(BOOST_ASIO_HAS_STD_ATOMIC)
27

    
28
namespace boost {
29
namespace asio {
30
namespace detail {
31

    
32
#if !defined(BOOST_ASIO_HAS_THREADS)
33
typedef long atomic_count;
34
inline void increment(atomic_count& a, long b) { a += b; }
35
#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)
36
typedef std::atomic<long> atomic_count;
37
inline void increment(atomic_count& a, long b) { a += b; }
38
#else // defined(BOOST_ASIO_HAS_STD_ATOMIC)
39
typedef boost::detail::atomic_count atomic_count;
40
inline void increment(atomic_count& a, long b) { while (b > 0) ++a, --b; }
41
#endif // defined(BOOST_ASIO_HAS_STD_ATOMIC)
42

    
43
} // namespace detail
44
} // namespace asio
45
} // namespace boost
46

    
47
#endif // BOOST_ASIO_DETAIL_ATOMIC_COUNT_HPP