В этой статье мы поймем, как сделать объект потокобезопасным, используя lock и monitor в многопоточности. когда мы создаем несколько потоков, в то время больше шансов получить исключение в нашем приложении. Давайте посмотрим на потокобезопасность на примере.

мы создаем один код для нескольких потоков,

Здесь мы получили исключение из-за того, что в основном приложении есть два потока, и оба вызывают функцию разделения, поэтому здесь можно получить исключение. Чтобы избежать такого рода исключений, нам нужно использовать правильные методы синхронизации потоков.

  1. Замок
  2. Мьютекс
  3. семафор

А пока давайте обсудим в теме блокировки.

Заблокировать цепочку

Lock обеспечивает безопасность потоков в многопоточном приложении на C#. Ключевое слово блокировки указывает, что одновременно может выполняться только один поток. когда мы используем блокировку потока, выполняется только та строка кода, которая указана в области блокировки для конкретного потока. Таким образом, используя этот поток блокировки, мы можем избежать исключения.

Существует еще один механизм безопасности потоков — монитор.

Класс Monitor представляет собой набор статических методов, обеспечивающих доступ к монитору, связанному с конкретным объектом.

Мы начинаем отслеживать логику нашего объекта, используя

Монитор.Введите(объект);

и конечный монитор с помощью

Монитор.Выход(объект);

Заключение

Здесь мы поняли концепцию безопасности потоков в концепции многопоточности, мы обеспечиваем безопасность многопоточности, чтобы избежать сбоя наших приложений. Существуют некоторые механизмы для обеспечения безопасности потоков, такие как lock , Mutex, Semaphore и т. д.

Если вы изучаете C#, посмотрите следующее видео, чтобы лучше попрактиковаться.