/usr/include/boost/fiber
NameSizeModeActions
algo/-0755rm
cuda/-0755rm
detail/-0755rm
future/-0755rm
hip/-0755rm
numa/-0755rm
all.hpp13810644editdlrm
barrier.hpp10220644editdlrm
buffered_channel.hpp255790644editdlrm
channel_op_status.hpp6780644editdlrm
condition_variable.hpp87120644editdlrm
context.hpp159270644editdlrm
exceptions.hpp33520644editdlrm
fiber.hpp45490644editdlrm
fixedsize_stack.hpp7820644editdlrm
fss.hpp25930644editdlrm
future.hpp3840644editdlrm
mutex.hpp13730644editdlrm
operations.hpp30340644editdlrm
policy.hpp8120644editdlrm
pooled_fixedsize_stack.hpp7210644editdlrm
properties.hpp20770644editdlrm
protected_fixedsize_stack.hpp7390644editdlrm
recursive_mutex.hpp16480644editdlrm
recursive_timed_mutex.hpp23800644editdlrm
scheduler.hpp55250644editdlrm
segmented_stack.hpp8170644editdlrm
timed_mutex.hpp21050644editdlrm
type.hpp23320644editdlrm
unbuffered_channel.hpp267860644editdlrm
Edit: /usr/include/boost/fiber/recursive_timed_mutex.hpp (2380B)
// 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_TIMED_MUTEX_H #define BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H #include #include #include #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 recursive_timed_mutex { private: friend class condition_variable; using wait_queue_type = context::wait_queue_t; detail::spinlock wait_queue_splk_{}; wait_queue_type wait_queue_{}; context * owner_{ nullptr }; std::size_t count_{ 0 }; bool try_lock_until_( std::chrono::steady_clock::time_point const& timeout_time) noexcept; public: recursive_timed_mutex() = default; ~recursive_timed_mutex() { BOOST_ASSERT( nullptr == owner_); BOOST_ASSERT( 0 == count_); BOOST_ASSERT( wait_queue_.empty() ); } recursive_timed_mutex( recursive_timed_mutex const&) = delete; recursive_timed_mutex & operator=( recursive_timed_mutex const&) = delete; void lock(); bool try_lock() noexcept; template< typename Clock, typename Duration > bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time_) { std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); return try_lock_until_( timeout_time); } template< typename Rep, typename Period > bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration) { return try_lock_until_( std::chrono::steady_clock::now() + timeout_duration); } void unlock(); }; }} #ifdef _MSC_VER # pragma warning(pop) #endif #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_SUFFIX #endif #endif // BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H