#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. Это не тот случай, я уже проходил через это.