TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.26K subscribers
Post #210 2.28K
Примитивы синхронизации доступно 🙏

1️⃣ Monitor

Простейший в использовании примитив синхронизации в .NET, который используется для обеспечения взаимоисключающего доступа к распределённому ресурсу путём получения или высвобождения блокировки на специальном объекте.

Монитор предназначен для использования в рамках одного процесса, и чтобы это делать максимально эффективно и удобно в C# завезли оператор lock - синтаксический сахар над конструкцией try-Enter-finally-Exit.

2️⃣ Mutex

Мьютекс очень похож на Монитор:

▪️предоставляет эксклюзивный доступ к ресурсу

▪️также как и Монитор, требует того, чтобы поток, получивший Мьютекс, высвободил его

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

3️⃣ Semaphore

Семафор ограничивает число потоков, у которых есть конкурентный доступ к пулу распределённых ресурсов.

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

Семафоры бывают именованными, для синхронизации на уровне ОС, и локальными в рамках одного процесса.

4️⃣ SemaphoreSlim

Это облегчённая и оптимизированная версия локального Cемафора.

Согласно предписаниям Microsoft его рекомендуется использовать для синхронизации в одном процессе.

5️⃣ Interlocked

Этот класс стандартной библиотеки предоставляет возможность выполнять простые атомарные операции на переменных, такие как: сложение, инкремент и декремент, перестановка и условная перестановка на основе сравнения, а также чтение long значений.
  • 👍 28
  • 🔥 8
  • ❤ 4
More from @steponeit
  1. Sep 29, 2026Рассказал как автоматизировал сборку лексера компилятором для своего языка программировани…
  2. Sep 28, 2026Пошутил про джавистов в прямом эфире 😅 Шарпизм победил окончательно и бесповоротно!
  3. Sep 27, 2026Post #860
  4. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  5. Sep 22, 2026Post #858
  6. Sep 21, 2026Post #857
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →