Я не думаю, что вам нужно выпустить семафор перед уничтожением, так как release()
просто добавляет указанное количество ресурсов (или разрешений ) ксемафор.Если вы посмотрите на примеры для QSemaphore, то обнаружите, что release()
может увеличить количество доступных разрешений сверх первоначальной суммы.
То, что документ говорит, что ни один поток не должен работать с семафором, который разрушается.Другими словами, все потоки должны завершить свои вызовы методов объекта семафора, какими бы они ни были, прежде чем он может быть безопасно уничтожен.И сам класс не поддерживает это;это исключительно прикладная ответственность, чтобы гарантировать это, внешними средствами.На самом деле, в многопоточном программировании распространена ситуация, когда уничтожение объекта (даже объекта синхронизации), который все еще используется, небезопасен.