TX Library Help – Version: 00173a, Revision: 173
 ALL  Windows graphics in a sandbox

Класс txAutoLock

Класс для автоматической блокировки и разблокировки критической секции. Подробнее...

Полный список членов класса

Открытые члены

 txAutoLock (CRITICAL_SECTION *cs, bool mandatory=true)
 Конструктор, блокирует критическую секцию
 txAutoLock (bool mandatory=true)
 Конструктор для блокировки холста TXLib.
 ~txAutoLock ()
 Деструктор, разблокирует секцию
 operator bool () const
 Позволяет проверить, заблокировалась секция или нет

Открытые атрибуты

CRITICAL_SECTION * cs_
 Блокируемая критическая секция

Закрытые члены

 txAutoLock (const this_t &) _tx_delete
 Такой вот копирайт.

Подробное описание

Класс для автоматической блокировки и разблокировки критической секции.

Начиная с Александреску, его пишут все и он прост, как пробка: в конструкторе -- EnterCriticalSection(), в деструкторе -- LeaveCriticalSection(). Это RAII в чистом виде: вы никогда не забудете разблочить секцию and your thread show will always go on.

Некоторые добавления: есть возможность вызвать TryEnterCriticalSection(), и, если она не заблочила секцию, деструктор ее не разблочивает. Есть оператор для проверки, заблочилась ли секция или нет (см. конструкторы класса и оператор bool).

Заметки:
Класс не инициализирует и не удаляет критическую секцию. Только синхронизирует. Остальное сами-сами :)
См. также:
txLock(), txUnlock(), txGDI()

См. определение в файле TXLib.h строка 6363


Конструктор(ы)

txAutoLock ( CRITICAL_SECTION *  cs,
bool  mandatory = true 
) [explicit]

Конструктор, блокирует критическую секцию

Аргументы:
csКритическая секция для блокировки.
mandatoryЕсли true, то блокировать обязательно (EnterCriticalSection).
Если false, то только пытаться блокировать (TryEnterCriticalSection).
Если не указано, то блокировка обязательна.
Примеры использования:
          CRITICAL_SECTION cs = {};         // This is not a Counter Strike

          void foo()
              {
              txAutoLock lock (&cs);        // Здесь вызовется EnterCriticalSection()
              ...
              }                             // а здесь LeaveCriticalsection()

          void bar()
              {
              txAutoLock lock (&cs, false); // TryEnterCriticalSection()
              if (!lock) return;            // ну не смогла
              ...
              }

См. определение в файле TXLib.h строка 6394

txAutoLock ( bool  mandatory = true) [explicit]

Конструктор для блокировки холста TXLib.

Аргументы:
mandatoryЕсли true, то блокировать обязательно, как в txLock (true).
Если false, то только пытаться блокировать, как в txLock (false).
Если не указано, то блокировка обязательна.
Примеры использования:
          void foobar()
              {
              txAutoLock lock;      // Здесь вызовется txLock()
              ...
              }                     // а здесь txUnlock()

См. определение в файле TXLib.h строка 6418


Методы

operator bool ( ) const

Позволяет проверить, заблокировалась секция или нет

Примеры использования:
См. в txAutoLock::AutoLock (CRITICAL_SECTION&, bool)

См. определение в файле TXLib.h строка 6439


Объявления и описания членов класса находятся в файле: