tgoop.com/seniorcpp/2855
Last Update:
std::semaphorestd::semaphore
— это класс шаблона в C++ <semaphore>
, представляющий собой примитив синхронизации, который позволяет контролировать доступ к совместно используемым ресурсам. В отличие от std::mutex
, std::semaphore
позволяет более чем одному потоку одновременно обращаться к одному и тому же ресурсу, но не более, чем указано в конструкторе.std::semaphore
имеет два основных метода:acquire()
— блокирует поток, пока значение счетчика семафора не станет ненулевым.release()
— увеличивает значение счетчика семафора на единицу.
В примере на картинке два потока пытаются получить доступ к ресурсу. Первый поток получает доступ к ресурсу, используя acquire()
, и освобождает его, используя release()
. Второй поток также пытается получить доступ к ресурсу, но блокируется, пока первый поток не освободит его. После того, как первый поток освободит ресурс, второй поток также сможет получить к нему доступ.
#для_продвинутых
BY Senior C++ Developer

Share with your friend now:
tgoop.com/seniorcpp/2855