Semaphore
Наследует: RefCounted < Object
Механизм синхронизации, используемый для управления доступом к общему ресурсу потоками Thread.
Описание
Синхронизирующий семафор, который можно использовать для синхронизации нескольких Thread. Инициализируется нулем при создании. Для двоичной версии см. Mutex.
Предупреждение: Семафоры следует использовать осторожно, чтобы избежать взаимоблокировок.
Предупреждение: Чтобы гарантировать, что операционная система сможет выполнить надлежащую очистку (без сбоев, без взаимоблокировок), должны быть соблюдены следующие условия:
Когда счетчик ссылок Semaphore достигает нуля и, следовательно, он уничтожается, ни один поток не должен его ожидать.
Когда счетчик ссылок Thread достигает нуля и, следовательно, он уничтожается, он не должен ожидать ни одного семафора.
Обучающие материалы
Методы
void |
|
try_wait() |
|
void |
wait() |
Описания метода
Понижает Semaphore, разрешая вход одному потоку или нескольким, если указано count.
Подобно wait(), но не блокирует, поэтому если значение равно нулю, немедленно завершается ошибкой и возвращается false. Если не равно нулю, возвращается true, чтобы сообщить об успешном завершении.
void wait() 🔗
Ожидает Semaphore, если его значение равно нулю, блокирует до тех пор, пока не станет ненулевым.