Повысить статус владельца named_semaphore в общей библиотеке

#c #boost

#c #повысить

Вопрос:

У меня есть общая библиотека, где я создал некоторые функциональные возможности с помощью семафоров. Я использую boost::interprocess::named_semaphore с тонкой оболочкой вокруг него. Эту библиотеку я сейчас динамически связываю с небольшой программой.

Проблема, с которой я сталкиваюсь, заключается в том, что семафоры не удаляются после запуска моего приложения. Эта проблема возникает только в Windows, в Linux семафоры удаляются. Теперь я вызываю boost::interprocess::named_semaphore::remove деструктор упомянутой мной оболочки, потому что named_semaphore сам этого не делает.

Кроме того, если я вызываю boost::interprocess::named_semaphore::remove непосредственно в своем приложении, а не внутри кода библиотеки, семафор действительно удаляется! Странно!

Есть идеи о том, что может пойти не так?

Комментарии:

1. Возможно, деструктор не вызывается, попробуйте поместить оператор print в деструктор

2. Спасибо @balki. Это не тот случай, я уже проходил через это.