diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:41:18 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:43:11 +0900 |
commit | f763a99a501650eff2c60288aa6f10ef916d769e (patch) | |
tree | 02af7e13f9a38c888ebf340fe764cbe7dae99da9 /boost/fiber/mutex.hpp | |
parent | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff) | |
download | boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2 boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip |
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/fiber/mutex.hpp')
-rw-r--r-- | boost/fiber/mutex.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
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 <boost/config.hpp> + +#include <boost/assert.hpp> + +#include <boost/fiber/context.hpp> +#include <boost/fiber/detail/config.hpp> +#include <boost/fiber/detail/spinlock.hpp> + +#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 |