Wait
Wait с таймаутом 0 не блокирует навсегда. Без таймаута на нулевом счётчике вызов не делаем.
Синтаксис
bool ok = sem.Wait(0);
Пример
Давайте два вызова Wait подряд:
using System;
using System.Threading;
class Program
{
static void Main()
{
var sem = new SemaphoreSlim(1, 1);
Console.WriteLine(sem.Wait(0));
Console.WriteLine(sem.Wait(0));
sem.Release();
}
}
Результат выполнения кода:
True
False
Пример
Давайте попробуем Wait при нулевом счётчике:
using System;
using System.Threading;
class Program
{
static void Main()
{
var sem = new SemaphoreSlim(0, 1);
Console.WriteLine(sem.Wait(0));
}
}
Результат выполнения кода:
False
Смотрите также
-
Release,
вернуть допуск -
CurrentCount,
счётчик -
SemaphoreSlim,
класс семафора -
Mutex,
мьютекс процесса