Повысьте примеры named_semaphore? - PullRequest
4 голосов
/ 08 марта 2011

Мне не удалось найти хороший пример, который показывает, как использовать boost :: interprocess :: named_semaphore (даже на веб-сайте Boost).

Я мог что-то увидеть в interprocess_semaphore, но они кажутся совершенно другими, и я не знаю, относится ли то, что показано для одного, к другому.

Кто-нибудь может дать мне несколько ссылок на такие примеры / руководства / документацию?

Спасибо.

1 Ответ

2 голосов
/ 19 февраля 2012

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

Именованные методы синхронизации используют разные объекты для доступа к одному и тому же ресурсу, но используют один и тот же ресурс, где анонимные методы синхронизации должны совместно использовать один и тот же объект в shared_memory или каком-либо другом механизме для доступа к одному и тому же ресурсу.

Это означает, что named_semaphore имеет 3 конструктора, которые либо открывают, либо создают ссылочный метод синхронизации, по сравнению с interprocess_semaphore, который имеет только 1 конструктор.

Оба типа семафоров реализуют post, wait, try_wait и timed_wait, как и ожидалось.

Дополнительная информация доступна здесь и здесь .

Один пример использования named_semaphore доступен здесь

...