Что такое Mutex и семафор В С#? где нам нужно реализовать?
Что такое Mutex и семафор в С#? Где нам нужно реализовать?
Как мы можем работать с ними в многопоточности?
Ответы
Ответ 1
Вы должны начать с MSDN.
- System.Threading.Mutex: примитив синхронизации, который также может использоваться для межпроцессной синхронизации.
- System.Threading.Semaphore: Ограничивает количество потоков, которые могут одновременно обращаться к ресурсу или пулу ресурсов.
Обычно вы используете только Mutex через процессы, например. если у вас есть ресурс, который должен предоставить несколько приложений, или если вы хотите создать однострочное приложение (т.е. разрешить только одно копирование одновременно).
Семафор позволяет ограничить доступ к определенному числу одновременных потоков, так что вы могли бы иметь, например, максимум два потока, выполняющих определенный путь кода за раз.
Ответ 2
Я бы начал с этого: http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials
а затем укрепить его с помощью ссылок MSDN, которые были добавлены bobbymcr.
Ответ 3
Возможно, вы захотите проверить оператор блокировки. Он может обрабатывать подавляющее большинство задач синхронизации потоков в С#
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);
}