一个对象在析构函数中获取互斥以防止删除它自己
An object acquiring mutex in destructor to prevent deletion of itself
这个概念能起作用吗?
class MyClass
{
public:
~MyClass()
{
MyMutex.acquire();
}
void ThreadFunction(void* param)
{
MyMutex.acquire();
//do something
MyMutex.release();
}
};
假设我们有一个此类的对象,称之为"inst"
我试图实现的是,如果:
- 一个线程处于活动状态并执行
inst->ThreadFunction
- 另一个线程正在调用
delete inst
,则此调用将挂起,直到ThreadFunction释放互斥对象
这样可以吗?
如果MyClass
包含资源,那么在MyClass
周围创建一个包装器会更好。如果程序使用从MyClass
继承的类,情况会更糟,因为此时ChildofMyClass
的析构函数已经被调用。
相关文章:
- 尝试从动态分配的二维数组 C++ 中读取值时出现分段错误,并在尝试删除它时给出 munmap_chunk():
- C++链表节点是指它自己
- 如果我有一个指向矢量元素的指针,而不是迭代器,如何删除它?
- 向量:清除它与删除它
- 使用 C++ 模板定义函数,但显式删除它以防止滥用
- Magick++ Bitmap::GetThumbnailImage() 阻止文件,无法删除它
- 截取屏幕截图,分析它,然后删除它
- 我意识到这是错误的,但我无法删除它
- 我不想要最后一个数字/值后面的逗号,如何删除它(c ++,循环)
- 为什么当我使用"new"关键字声明数组指针时无法删除它
- 我怎样才能删除它?(进程 4652) 以代码 0 退出
- 即使指针在函数堆栈中,我也必须删除它吗
- 如何找到字符串并使用C 文件中的文件删除它
- 如何在c++中对向量进行切片并分配给它自己
- 如何在先前读取行中找到一些单词并在C 中的输出读/写字符串中删除它
- 当我要删除它时,指针甚至无法设置为null
- 我可以在迭代 std::string 对象时删除它中的元素吗?
- C++ std::函数,返回它自己的类型(再次递归类型)
- 删除指针也会删除它所指向的内存吗?
- 一个对象在析构函数中获取互斥以防止删除它自己