Mutex
Без имени new Mutex(false) держит блокировку в пределах процесса. Именованный Mutex здесь не используем.
Синтаксис
using var mtx = new Mutex(false);
Пример
Давайте захватим мьютекс с WaitOne(0):
using System;
using System.Threading;
class Program
{
static void Main()
{
using var mtx = new Mutex(false);
bool res = mtx.WaitOne(0);
Console.WriteLine(res);
mtx.ReleaseMutex();
}
}
Результат выполнения кода:
True
Пример
Давайте захватим мьютекс дважды в одном потоке:
using System;
using System.Threading;
class Program
{
static void Main()
{
using var mtx = new Mutex(false);
Console.WriteLine(mtx.WaitOne(0));
Console.WriteLine(mtx.WaitOne(0));
mtx.ReleaseMutex();
mtx.ReleaseMutex();
}
}
Результат выполнения кода:
True
True
Смотрите также
-
SemaphoreSlim,
допуски в процессе -
Monitor,
Monitor -
Lock,
Lock -
Enter,
Enter