TGViewer
Senior C++ Developer Senior C++ Developer @seniorcpp · 11.6K subscribers
Post #3102 1.86K
std::semaphore

std::semaphore — это класс шаблона в C++ <semaphore>, представляющий собой примитив синхронизации, который позволяет контролировать доступ к совместно используемым ресурсам. В отличие от std::mutex, std::semaphore позволяет более чем одному потоку одновременно обращаться к одному и тому же ресурсу, но не более, чем указано в конструкторе.

std::semaphore имеет два основных метода:

acquire() — блокирует поток, пока значение счетчика семафора не станет ненулевым.
release() — увеличивает значение счетчика семафора на единицу.

В примере на картинке два потока пытаются получить доступ к ресурсу. Первый поток получает доступ к ресурсу, используя acquire(), и освобождает его, используя release(). Второй поток также пытается получить доступ к ресурсу, но блокируется, пока первый поток не освободит его. После того, как первый поток освободит ресурс, второй поток также сможет получить к нему доступ.

#для_продвинутых
More from @seniorcpp
  1. Oct 5, 2026#вопросы_с_собеседований В чем отличие vector от deque? Ответ: Здесь вспоминают о наличии…
  2. Oct 4, 2026Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор.…
  3. Oct 1, 2026malloc стал безопасен В предыдущих версиях использование низкоуровневых функций, унаследов…
  4. Sep 30, 2026Алгоритм copy_n Используется для копирования элементов из одного контейнера в другой.
  5. Sep 28, 2026Упрощаем код с помощью if constexpr и концептов C++17/C++20 Смотреть статью
  6. Sep 27, 2026#вопросы_с_собеседований Как следует обрабатывать ошибки во время выполнения в C++? — Ошиб…
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 →