, либо все задачи, приостановл

Автор admin Суббота, 27 июня 2009 11:32

, либо все задачи, приостановленные по данному объекту Condition, вызовом функции broadcast(). Функция wait() существует в двух формах. Первой форме передается интервал времени в миллисекундах, который имеет тот же смысл, что и при вызове sleep(): «приостановка в течение заданного промежутка времени». Вторая форма вызывается без аргументов и чаще используется на практике. Обе формы wait() освобождают мутекс, управляемый объектом Condition, и приостанавливают программный поток до вызова signal() или broadcast() для этого объекта. Первая форма также может завершиться по тайм-ауту (если заданный промежуток времени истечет до получения сигнала от функции signal() или broadcast()). Освобождение мутекса функцией waitQ означает, что мутекс может быть захвачен другим потоком. Иначе говоря, при вызове wait() вы говорите: «Я сделал все, что мог, и перехожу в ожидание; пусть поработают другие синхронизированные операции». Обычно функция wait() используется для ожидания некоторого условия, не контролируемого текущей функцией (нередко это условие изменяется другим программным потоком). Но «крутить» холостой цикл с п


Комментарии закрыты.