summaryrefslogtreecommitdiff
path: root/boost/fiber/mutex.hpp
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:41:18 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:43:11 +0900
commitf763a99a501650eff2c60288aa6f10ef916d769e (patch)
tree02af7e13f9a38c888ebf340fe764cbe7dae99da9 /boost/fiber/mutex.hpp
parent5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff)
downloadboost-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.hpp70
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