| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | //// detail/macos_fenced_block.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_MACOS_FENCED_BLOCK_HPP#define BOOST_ASIO_DETAIL_MACOS_FENCED_BLOCK_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(__MACH__) && defined(__APPLE__)#include <libkern/OSAtomic.h>#include <boost/asio/detail/noncopyable.hpp>#include <boost/asio/detail/push_options.hpp>namespace boost {namespace asio {namespace detail {class macos_fenced_block  : private noncopyable{public:  enum half_t { half };  enum full_t { full };  // Constructor for a half fenced block.  explicit macos_fenced_block(half_t)  {  }  // Constructor for a full fenced block.  explicit macos_fenced_block(full_t)  {    OSMemoryBarrier();  }  // Destructor.  ~macos_fenced_block()  {    OSMemoryBarrier();  }};} // namespace detail} // namespace asio} // namespace boost#include <boost/asio/detail/pop_options.hpp>#endif // defined(__MACH__) && defined(__APPLE__)#endif // BOOST_ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
 |