TryLockMutex()
Синтаксис
Result = TryLockMutex(Mutex)
Описание
Делает попытку заблокировать указанный Мьютекс. В отличие от функции LockMutex(), эта функция не приостанавливает выполнение до освобождения Мьютекса. Она немедленно возвращается, а возвращаемое значение показывает, была попытка блокировки успешна или нет. Это полезно в ситуациях, когда поток вместо того что бы ждать освобождения Мьютекса, должен выполнять какие то другие операции.
Параметры
Mutex Номер, идентифицирующий объект Мьютекс, который требуется заблокировать.
Возвращаемое значение
Возвращает не нулевое значение, если Мьютекс был успешно заблокирован, в противном случае 0.
Комментарии
Если блокировка была успешна, следует вызвать функцию UnlockMutex() чтобы освободить Мьютекс для других потоков. Если этого не сделать, это легко может привести в тупиковую ситуацию.
Пример
Procedure ThreadProcedure(*Value) Shared Mutex Repeat If TryLockMutex(Mutex) PrintN("Мьютекс успешно заблокирован.") UnlockMutex(Mutex) Break ; выйти из цикла и потока Else PrintN("Всё ещё ждём доступа к Мьютексу...") Delay(200) EndIf ForEver EndProcedure OpenConsole() Mutex = CreateMutex() LockMutex(Mutex) ; главная программа изначально блокирует Мьютекс Thread = CreateThread(@ThreadProcedure(), 0) Delay(4000) UnlockMutex(Mutex) ; теперь освободим Мьютекс, так что поток может получить его Input()
См. также
UnlockMutex()
Поддерживаемые OS
Все