Что такое Mutex и семафор В С#? где нам нужно реализовать?
Что такое Mutex и семафор в С#? Где нам нужно реализовать?
Как мы можем работать с ними в многопоточности?
Ответ 1
Вы должны начать с MSDN.
System.Threading.Mutex: примитив синхронизации, который также может использоваться для межпроцессной синхронизации.
System.Threading.Semaphore: Ограничивает количество потоков, которые могут одновременно обращаться к ресурсу или пулу ресурсов.
Обычно вы используете только Mutex через процессы, например. если у вас есть ресурс, который должен предоставить несколько приложений, или если вы хотите создать однострочное приложение (т.е. разрешить только одно копирование одновременно).
Семафор позволяет ограничить доступ к определенному числу одновременных потоков, так что вы могли бы иметь, например, максимум два потока, выполняющих определенный путь кода за раз.
Возможно, вы захотите проверить оператор блокировки. Он может обрабатывать подавляющее большинство задач синхронизации потоков в С#
class Test {
private static object Lock = new object();
public function Synchronized()
{
lock(Lock)
{
// Only one thread at a time is able to enter this section
}
}
}
Оператор блокировки реализуется путем вызова Monitor.Enter и Monitor.Exit. Это эквивалентно следующему коду:
Monitor.Enter(Lock);
try
{
// Only one thread at a time is able to enter this section
}
finally
{
Monitor.Exit(Lock);
}