#include <boost/fiber/mutex.hpp>
namespace boost {
namespace fibers {
class mutex {
public:
mutex();
~mutex();
mutex( mutex const& other) = delete;
mutex & operator=( mutex const& other) = delete;
void lock();
bool try_lock();
void unlock();
};
}}
mutex
provides an exclusive-ownership mutex. At most one fiber
can own the lock on a given instance of mutex
at any time. Multiple
concurrent calls to lock()
, try_lock()
and unlock()
shall be permitted.
Любое волокно, заблокированное в lock()
, приостанавливается до тех пор, пока владеющее волокном не освободит замок, позвонив unlock()
.
void lock();
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Текущие волокна блокируют до тех пор, пока собственность не будет получена.
- Throws:
lock_error
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
bool try_lock();
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Попытка получить право собственности на текущее волокно без блокировки.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
lock_error
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
void unlock();
- Precondition:
Текущее волокно владеет *это
.
- Effects:
Отключает замок на *это
с помощью текущего волокна.
- Throws:
lock_error
- Error Conditions:
operation_not_permitted: если boost::this_fiber::get_id()
не владеет мутексом.
#include <boost/fiber/timed_mutex.hpp>
namespace boost {
namespace fibers {
class timed_mutex {
public:
timed_mutex();
~timed_mutex();
timed_mutex( timed_mutex const& other) = delete;
timed_mutex & operator=( timed_mutex const& other) = delete;
void lock();
bool try_lock();
void unlock();
template< typename Clock, typename Duration >
bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time);
template< typename Rep, typename Period >
bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration);
};
}}
timed_mutex
provides an exclusive-ownership mutex. At most
one fiber can own the lock on a given instance of timed_mutex
at
any time. Multiple concurrent calls to lock()
, try_lock()
, try_lock_until()
, try_lock_for()
and unlock()
shall be permitted.
void lock();
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Текущие волокна блокируют до тех пор, пока собственность не будет получена.
- Throws:
lock_error
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
bool try_lock();
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Попытка получить право собственности на текущее волокно без блокировки.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
lock_error
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
void unlock();
- Precondition:
Текущее волокно владеет *это
.
- Effects:
Отключает замок на *это
с помощью текущего волокна.
- Throws:
lock_error
- Error Conditions:
operation_not_permitted: если boost::this_fiber::get_id()
не владеет мутексом.
template< typename Clock, typename Duration >
bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time);
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Попытка получить право собственности на текущее волокно. Блоки до тех пор, пока право собственности не будет получено, или оговоренное время будет достигнуто. Если указанное время уже прошло, ведет себя как timed_mutex::try_lock()
.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
lock_error
, исключения, связанные с тайм-аутом.
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
template< typename Rep, typename Period >
bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration);
- Precondition:
Клетчатка не владеет мутексом.
- Effects:
Попытка получить право собственности на текущее волокно. Блоки до тех пор, пока право собственности не будет получено, или оговоренное время будет достигнуто. Если указанное время уже прошло, ведет себя как timed_mutex::try_lock()
.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
lock_error
, исключения, связанные с тайм-аутом.
- Error Conditions:
resource_deadlock_would_occur: если boost::this_fiber::get_id()
уже владеет mutex.
#include <boost/fiber/recursive_mutex.hpp>
namespace boost {
namespace fibers {
class recursive_mutex {
public:
recursive_mutex();
~recursive_mutex();
recursive_mutex( recursive_mutex const& other) = delete;
recursive_mutex & operator=( recursive_mutex const& other) = delete;
void lock();
bool try_lock() noexcept;
void unlock();
};
}}
recursive_mutex
provides an exclusive-ownership recursive
mutex. At most one fiber can own the lock on a given instance of recursive_mutex
at
any time. Multiple concurrent calls to lock()
, try_lock()
and unlock()
shall be permitted. A fiber that already
has exclusive ownership of a given recursive_mutex
instance
can call lock()
or try_lock()
to acquire an additional level of ownership of the mutex. unlock()
must be called once for each level of ownership
acquired by a single fiber before ownership can be acquired by another fiber.
void lock();
- Effects:
Текущие волокна блокируют до тех пор, пока собственность не будет получена.
- Throws:
Ничего
bool try_lock() noexcept;
- Effects:
Попытка получить право собственности на текущее волокно без блокировки.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
Ничего.
void unlock();
- Effects:
Отключает замок на *это
с помощью текущего волокна.
- Throws:
lock_error
- Error Conditions:
operation_not_permitted: если boost::this_fiber::get_id()
не владеет мутексом.
#include <boost/fiber/recursive_timed_mutex.hpp>
namespace boost {
namespace fibers {
class recursive_timed_mutex {
public:
recursive_timed_mutex();
~recursive_timed_mutex();
recursive_timed_mutex( recursive_timed_mutex const& other) = delete;
recursive_timed_mutex & operator=( recursive_timed_mutex const& other) = delete;
void lock();
bool try_lock() noexcept;
void unlock();
template< typename Clock, typename Duration >
bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time);
template< typename Rep, typename Period >
bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration);
};
}}
recursive_timed_mutex
provides an exclusive-ownership
recursive mutex. At most one fiber can own the lock on a given instance of
recursive_timed_mutex
at any time. Multiple concurrent
calls to lock()
,
try_lock()
,
try_lock_for()
,
try_lock_until()
and unlock()
shall be permitted. A fiber that already has exclusive ownership of a given
recursive_timed_mutex
instance can call lock()
,
try_lock()
,
try_lock_for()
or try_lock_until()
to acquire an additional level of ownership of the mutex. unlock()
must be called once for each level of ownership
acquired by a single fiber before ownership can be acquired by another fiber.
void lock();
- Effects:
Текущие волокна блокируют до тех пор, пока собственность не будет получена.
- Throws:
Ничего
bool try_lock() noexcept;
- Effects:
Попытка получить право собственности на текущее волокно без блокировки.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
Ничего.
void unlock();
- Effects:
Отключает замок на *это
с помощью текущего волокна.
- Throws:
lock_error
- Error Conditions:
operation_not_permitted: если boost::this_fiber::get_id()
не владеет мутексом.
template< typename Clock, typename Duration >
bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time);
- Effects:
Попытка получить право собственности на текущее волокно. Блоки до тех пор, пока право собственности не будет получено, или оговоренное время будет достигнуто. Если указанное время уже прошло, ведет себя как recursive_timed_mutex::try_lock()
.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
Исключения, связанные с таймаутом.
template< typename Rep, typename Period >
bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration);
- Effects:
Попытка получить право собственности на текущее волокно. Блоки до тех пор, пока право собственности не будет получено, или оговоренное время будет достигнуто. Если указанное время уже прошло, ведет себя как recursive_timed_mutex::try_lock()
.
- Returns:
правда
если собственность была получена для текущего волокна, false
в противном случае.
- Throws:
Исключения, связанные с таймаутом.