Титульная страница | Пространства имен | Алфавитный указатель | Классы | Файлы | Члены пространства имен | Члены классов | Описания | Примеры

Класс threads_1::_os_cond_var_t

#include <cond_var.hpp>

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


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

Реализация condition variable для Posix.

Поскольку в Win32, в отличии от Posix, нет понятия condition variable, данная реализация использует синхронизирующие объекты Event операционной системы Win32.

Для того, чтобы проигнорировать наступление события если нет ожидающих нитей, используется PulseEvent.


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

void wait (_os_mutex_sem_t &mutex)
 Ожидание наступления события.

void notify_one ()
 Нотификация только одной ожидающей нити.

void notify_all ()
 Нотификация только всех ожидающих нитей.

 _os_cond_var_t ()
 Создает неименованный семафор.

void wait (_os_mutex_sem_t &sem)
 Ожидание наступления события.

void notify_one ()
 Нотификация только одной ожидающей нити.

void notify_all ()
 Нотификация всех ожидающих нитей.


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

void do_notify ()
 Выполнение основных действий по генерации нотификации.


Закрытые данные

pthread_cond_t m_event
 Событие.

_os_mutex_sem_t m_self_lock
 Собственный замок объекта.

HANDLE m_notify_event
 Событие с ручным сбросом, которое выставляется в методах notify_all(), notify_one().

HANDLE m_notify_processed
 Событие с ручным сбросом, которое выставляется в методе wait() для установления признака, что нотификация отработала.

unsigned long m_awaiting
 Количество нитей, вошедших в метод wait().

unsigned long m_to_wake
 Количество нитей, которым разрешено обработать нотификацию.


Данные класса

_os_mutex_sem_t threads_1::_os_cond_var_t::m_self_lock [private]
 

Собственный замок объекта.

Предохраняет значения m_awaiting, m_to_wake в методе wait().

unsigned long threads_1::_os_cond_var_t::m_to_wake [private]
 

Количество нитей, которым разрешено обработать нотификацию.

Выставляется в методах notify_all(), notify_one().


Объявления и описания членов классов находятся в файлах:
Документация по threads_1. Последние изменения: Wed Aug 4 06:46:01 2004. Создано системой doxygen 1.3.7
Hosted by uCoz