我们需要消灭信号量吗?

时间:2014-04-25 09:09:43

标签: c++ free destructor semaphore

我有一个使用(非静态)信号量的类。

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

当我们仍然wait获取信号量时,该类的对象不应被“破坏”。

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

2 个答案:

答案 0 :(得分:0)

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

semaphore *S =  ...

答案 1 :(得分:0)

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