Нужно ли уничтожать семафоры?

У меня есть класс, работающий с (не статичными) семафорами.

В деструкторе этого класса я освобождаю динамически выделяемую память.

Объекты класса не должны быть "разрушены", пока мы wait для семафора.

Мне все еще нужно использовать sem_destroy в деструкторе класса, чтобы убедиться, что семафоры завершены?

2 ответа

Если вы не вызываете sem_destroy для семафора, он неявно уничтожается при освобождении памяти, в которой находится семафор. Если ваш семафор находится в неразделенной памяти, его семафор уничтожается неявно, когда процесс вызывает exit или exec. Если семафор находится в общей памяти, он уничтожается после закрытия последнего процесса.

Да. В C++ динамически добавленные объекты не уничтожаются автоматически, и вы должны уничтожить любой созданный вами объект с помощью указателя следующим образом:

semaphore *S =  ...
Другие вопросы по тегам