我有一个类处理(非静态)信号量。
在这个类的析构函数中,我释放动态分配的内存。
当我们仍然为信号量wait
时,类的对象不应该被"解构"。
我还需要在类的析构函数中使用sem_destroy
来确保信号量被终止吗?
是。在C++中,动态添加的对象不会自动销毁,你应该销毁你用这样的指针创建的任何对象:
semaphore *S = ...
如果不为信号量调用sem_destroy,那么当信号量所在的内存被释放时,它将被隐式销毁。如果您的信号量在非共享内存中,那么当进程调用exit或exec时,信号量将被隐式销毁。如果信号量在共享内存中,那么在最后一个进程关闭后,它就会被销毁。