我们需要摧毁信号量吗

Do we need to destroy semaphores?

本文关键字:信号量 摧毁 我们      更新时间:2023-10-16

我有一个类处理(非静态)信号量。

在这个类的析构函数中,我释放动态分配的内存。

当我们仍然为信号量wait时,类的对象不应该被"解构"。

我还需要在类的析构函数中使用sem_destroy来确保信号量被终止吗?

是。在C++中,动态添加的对象不会自动销毁,你应该销毁你用这样的指针创建的任何对象:

semaphore *S =  ...

如果不为信号量调用sem_destroy,那么当信号量所在的内存被释放时,它将被隐式销毁。如果您的信号量在非共享内存中,那么当进程调用exit或exec时,信号量将被隐式销毁。如果信号量在共享内存中,那么在最后一个进程关闭后,它就会被销毁。