| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | //// detail/atomic_count.hpp// ~~~~~~~~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#ifndef BOOST_ASIO_DETAIL_ATOMIC_COUNT_HPP#define BOOST_ASIO_DETAIL_ATOMIC_COUNT_HPP#if defined(_MSC_VER) && (_MSC_VER >= 1200)# pragma once#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)#include <boost/asio/detail/config.hpp>#if !defined(BOOST_ASIO_HAS_THREADS)// Nothing to include.#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)# include <atomic>#else // defined(BOOST_ASIO_HAS_STD_ATOMIC)# include <boost/detail/atomic_count.hpp>#endif // defined(BOOST_ASIO_HAS_STD_ATOMIC)namespace boost {namespace asio {namespace detail {#if !defined(BOOST_ASIO_HAS_THREADS)typedef long atomic_count;inline void increment(atomic_count& a, long b) { a += b; }#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)typedef std::atomic<long> atomic_count;inline void increment(atomic_count& a, long b) { a += b; }#else // defined(BOOST_ASIO_HAS_STD_ATOMIC)typedef boost::detail::atomic_count atomic_count;inline void increment(atomic_count& a, long b) { while (b > 0) ++a, --b; }#endif // defined(BOOST_ASIO_HAS_STD_ATOMIC)} // namespace detail} // namespace asio} // namespace boost#endif // BOOST_ASIO_DETAIL_ATOMIC_COUNT_HPP
 |