From f763a99a501650eff2c60288aa6f10ef916d769e Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Thu, 6 Oct 2016 10:41:18 +0900 Subject: Imported Upstream version 1.62.0 Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c Signed-off-by: DongHun Kwak --- boost/fiber/mutex.hpp | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 boost/fiber/mutex.hpp (limited to 'boost/fiber/mutex.hpp') diff --git a/boost/fiber/mutex.hpp b/boost/fiber/mutex.hpp new file mode 100644 index 0000000000..b56e96802a --- /dev/null +++ b/boost/fiber/mutex.hpp @@ -0,0 +1,70 @@ + +// Copyright Oliver Kowalke 2013. +// 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_FIBERS_MUTEX_H +#define BOOST_FIBERS_MUTEX_H + +#include + +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4251) +#endif + +namespace boost { +namespace fibers { + +class condition_variable; + +class BOOST_FIBERS_DECL mutex { +private: + friend class condition_variable; + + typedef context::wait_queue_t wait_queue_t; + + context * owner_{ nullptr }; + wait_queue_t wait_queue_{}; + detail::spinlock wait_queue_splk_{}; + +public: + mutex() = default; + + ~mutex() { + BOOST_ASSERT( nullptr == owner_); + BOOST_ASSERT( wait_queue_.empty() ); + } + + mutex( mutex const&) = delete; + mutex & operator=( mutex const&) = delete; + + void lock(); + + bool try_lock(); + + void unlock(); +}; + +}} + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_FIBERS_MUTEX_H -- cgit v1.2.3