![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/include/boost/fiber/ |
Upload File : |
// 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) // // based on boost::interprocess::sync::interprocess_spinlock #ifndef BOOST_FIBERS_RECURSIVE_MUTEX_H #define BOOST_FIBERS_RECURSIVE_MUTEX_H #include <cstddef> #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 recursive_mutex { private: friend class condition_variable; typedef context::wait_queue_t wait_queue_type; detail::spinlock wait_queue_splk_{}; wait_queue_type wait_queue_{}; context * owner_{ nullptr }; std::size_t count_{ 0 }; public: recursive_mutex() = default; ~recursive_mutex() { BOOST_ASSERT( nullptr == owner_); BOOST_ASSERT( 0 == count_); BOOST_ASSERT( wait_queue_.empty() ); } recursive_mutex( recursive_mutex const&) = delete; recursive_mutex & operator=( recursive_mutex const&) = delete; void lock(); bool try_lock() noexcept; void unlock(); }; }} #ifdef _MSC_VER # pragma warning(pop) #endif #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_SUFFIX #endif #endif // BOOST_FIBERS_RECURSIVE_MUTEX_H