避免在多线程环境中删除单一实例
avoid deletion of singleton in multithreaded environment
我在C++中有一个通用的单例类,它在单线程中工作,但是由于现在我要进入多线程环境,我想确保单例在那里工作,并且崩溃的一件事是多个线程正在尝试在该单个指针上调用删除。有没有办法不使用锁来避免此错误。
class singleton
{
public :
static singleton* getinstance();
private :
singleton();
singleton(const singleton& that);
singleton& operator=(const singleton& that);
static singleton* ptr;
};
这样
更好。没什么可抱怨的。干杯!
它在哪里被删除? 单例通常永远不会被删除;如果你想破坏它(你通常不这样做),你可以使用迈耶斯成语;否则,您分配一次,并且永远不会删除它。
线程问题更加微妙。 最简单的解决方案通常是为了确保instance
在在线程开始之前至少一次,通常是由于静态变量的初始化。 一旦指针非空,它永远不会改变,所以没有问题线程。 (但这与删除任何内容无关。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 为什么示例代码访问IUnknown中已删除的内存
- 如何通过 getter 函数删除矢量的元素?
- 何时会在单一实例中删除内存
- 删除单一实例对象 cpp 时出现内存泄漏
- 避免在多线程环境中删除单一实例
- 如何在创建范围结束时自动从单一实例管理器类中删除shared_ptr