CondWait
 
Останавливает выполнение текущего потока пока некоторое условие не станет истинным

Синтаксис

Declare Sub CondWait ( ByVal handle As Any Ptr, ByVal mutex As Any Ptr )

Использование

CondWait ( handle, mutex )

Параметры

handle
Хендл условной переменной, или пустой указатель (0) в случае возникновения ошибки.
mutex
Мьютекс,  связанный с этой условной переменной, который должен быть заблокирован при проверке условия и вызова CondWait

Описание

Функция останавливает поток, где вызывается. Хендлы потоков могут быть освобождены (вновь запущены) с помощью CondSignal или CondBroadcast.

После того, как создается условная переменная с помощью CondCreate и запускаются потоки, одному или более из них может быть установлено условие с помощью CondWait; они будут остановлены до некоторых других потоков;  CondSignal может перезапустить ожидающий поток. CondBroadcast может использоваться для перезапуска всех потоков, ожидающих условия. В конце программы CondDestroy должна быть использована во избежание утечки ресурсов операционной системы.

При вызове CondWait, mutex уже должен быть заблокирован. Будет установлено ожидание условной переменной и атомная разблокировка мьютекса. Когда условная переменная получит сигнал, mutex будет снова заблокирован и затем выполнение вернется в потоке после вызова CondWait.

Пример

Смотрите CondCreate

Различия платформ

  • Condwait не доступна в версии DOS FreeBASIC, потому что многопоточность не поддерживается ядром DOS, не использующим расширитель.
  • В Linux потоки всегда запускаются в том порядке, котором они были созданы, а в Windows это нельзя угадать. Это вопрос операционных систем, а не FreeBASIC.

Различия диалектов

  • Потоки не допускаются в -lang qb

Отличия от QB

  • Новое в FreeBASIC

См. также