Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Mutex Types

Boost , Chapter 1. Fiber , Synchronization

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class mutex

#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().

Member function lock()

void lock();

Precondition:

Клетчатка не владеет мутексом.

Effects:

Текущие волокна блокируют до тех пор, пока собственность не будет получена.

Throws:

lock_error

Error Conditions:

resource_deadlock_would_occur: если boost::this_fiber::get_id() уже владеет mutex.

Member function try_lock()

bool try_lock();

Precondition:

Клетчатка не владеет мутексом.

Effects:

Попытка получить право собственности на текущее волокно без блокировки.

Returns:

правда если собственность была получена для текущего волокна, false в противном случае.

Throws:

lock_error

Error Conditions:

resource_deadlock_would_occur: если boost::this_fiber::get_id() уже владеет mutex.

Member function unlock()

void unlock();

Precondition:

Текущее волокно владеет *это.

Effects:

Отключает замок на *это с помощью текущего волокна.

Throws:

lock_error

Error Conditions:

operation_not_permitted: если boost::this_fiber::get_id() не владеет мутексом.

Class timed_mutex

#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.

Member function lock()

void lock();

Precondition:

Клетчатка не владеет мутексом.

Effects:

Текущие волокна блокируют до тех пор, пока собственность не будет получена.

Throws:

lock_error

Error Conditions:

resource_deadlock_would_occur: если boost::this_fiber::get_id() уже владеет mutex.

Member function try_lock()

bool try_lock();

Precondition:

Клетчатка не владеет мутексом.

Effects:

Попытка получить право собственности на текущее волокно без блокировки.

Returns:

правда если собственность была получена для текущего волокна, false в противном случае.

Throws:

lock_error

Error Conditions:

resource_deadlock_would_occur: если boost::this_fiber::get_id() уже владеет mutex.

Member function unlock()

void unlock();

Precondition:

Текущее волокно владеет *это.

Effects:

Отключает замок на *это с помощью текущего волокна.

Throws:

lock_error

Error Conditions:

operation_not_permitted: если boost::this_fiber::get_id() не владеет мутексом.

Templated member function try_lock_until()

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.

Templated member function try_lock_for()

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.

Class recursive_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.

Member function lock()

void lock();

Effects:

Текущие волокна блокируют до тех пор, пока собственность не будет получена.

Throws:

Ничего

Member function try_lock()

bool try_lock() noexcept;

Effects:

Попытка получить право собственности на текущее волокно без блокировки.

Returns:

правда если собственность была получена для текущего волокна, false в противном случае.

Throws:

Ничего.

Member function unlock()

void unlock();

Effects:

Отключает замок на *это с помощью текущего волокна.

Throws:

lock_error

Error Conditions:

operation_not_permitted: если boost::this_fiber::get_id() не владеет мутексом.

Class recursive_timed_mutex

#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.

Member function lock()

void lock();

Effects:

Текущие волокна блокируют до тех пор, пока собственность не будет получена.

Throws:

Ничего

Member function try_lock()

bool try_lock() noexcept;

Effects:

Попытка получить право собственности на текущее волокно без блокировки.

Returns:

правда если собственность была получена для текущего волокна, false в противном случае.

Throws:

Ничего.

Member function unlock()

void unlock();

Effects:

Отключает замок на *это с помощью текущего волокна.

Throws:

lock_error

Error Conditions:

operation_not_permitted: если boost::this_fiber::get_id() не владеет мутексом.

Templated member function try_lock_until()

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:

Исключения, связанные с таймаутом.

Templated member function try_lock_for()

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:

Исключения, связанные с таймаутом.


PrevUpHomeNext

Статья Mutex Types раздела Chapter 1. Fiber Synchronization может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Synchronization ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:16:44/0.0074410438537598/1