В этой статье мы поймем, как сделать объект потокобезопасным, используя lock и monitor в многопоточности. когда мы создаем несколько потоков, в то время больше шансов получить исключение в нашем приложении. Давайте посмотрим на потокобезопасность на примере.
мы создаем один код для нескольких потоков,
Здесь мы получили исключение из-за того, что в основном приложении есть два потока, и оба вызывают функцию разделения, поэтому здесь можно получить исключение. Чтобы избежать такого рода исключений, нам нужно использовать правильные методы синхронизации потоков.
- Замок
- Мьютекс
- семафор
А пока давайте обсудим в теме блокировки.
Заблокировать цепочку
Lock обеспечивает безопасность потоков в многопоточном приложении на C#. Ключевое слово блокировки указывает, что одновременно может выполняться только один поток. когда мы используем блокировку потока, выполняется только та строка кода, которая указана в области блокировки для конкретного потока. Таким образом, используя этот поток блокировки, мы можем избежать исключения.
Существует еще один механизм безопасности потоков — монитор.
Класс Monitor представляет собой набор статических методов, обеспечивающих доступ к монитору, связанному с конкретным объектом.
Мы начинаем отслеживать логику нашего объекта, используя
Монитор.Введите(объект);
и конечный монитор с помощью
Монитор.Выход(объект);
Заключение
Здесь мы поняли концепцию безопасности потоков в концепции многопоточности, мы обеспечиваем безопасность многопоточности, чтобы избежать сбоя наших приложений. Существуют некоторые механизмы для обеспечения безопасности потоков, такие как lock , Mutex, Semaphore и т. д.
Если вы изучаете C#, посмотрите следующее видео, чтобы лучше попрактиковаться.