Основное различие между interprocess_semaphore
и named_semaphore
заключается в том, что interprocess_semaphore
используется совместно с использованием общей памяти, где значение named_semaphore
не нужно создавать (используя конструкцию) или хранить в общей памяти как на него ссылаются по имени, а не анонимно.
Именованные методы синхронизации используют разные объекты для доступа к одному и тому же ресурсу, но используют один и тот же ресурс, где анонимные методы синхронизации должны совместно использовать один и тот же объект в shared_memory или каком-либо другом механизме для доступа к одному и тому же ресурсу.
Это означает, что named_semaphore
имеет 3 конструктора, которые либо открывают, либо создают ссылочный метод синхронизации, по сравнению с interprocess_semaphore
, который имеет только 1 конструктор.
Оба типа семафоров реализуют post
, wait
, try_wait
и timed_wait
, как и ожидалось.
Дополнительная информация доступна здесь и здесь .
Один пример использования named_semaphore
доступен здесь