atframe_utils icon indicating copy to clipboard operation
atframe_utils copied to clipboard

大佬,咨询一下,单例为啥要这么整呀 这个能解决,调用so,构造函数调用2次的问题吗~

Open 20083017 opened this issue 1 year ago • 7 comments

20083017 avatar May 24 '24 12:05 20083017

单例的实现涉及诸多细节问题,你说的 “为啥要这么整呀” 是指什么?

owent avatar May 28 '24 04:05 owent

image image brpc 的实现也比较复杂,没有理解为啥要这么实现,是要解决什么问题,为什么不用简单的搞法 能解决跨模块调用,还有编译依赖顺序之类的问题吗 ^_^

20083017 avatar May 28 '24 07:05 20083017

这个实现的原因是多方面的,比如上面图里这种简单得实现的几个问题:

  • 从线程安全的角度,这么写并不能保证所有平台和编译环境线程安全。
  • 从生命周期管理的角度,这么写很难处理多个singleton互相引用的时候优雅退出。
  • 从符号隔离的角度,这么写可能有ABI冲突。

具体问题要具体分析的,解决方案也不是唯一的,看你从什么角度去看待和处理。

owent avatar May 28 '24 13:05 owent

使用库里这个单例,需要注意哪些问题呢? 目前,我们代码里边存在优雅退出、跨模块调用重复构造问题,编译环境是c++11以上

20083017 avatar May 29 '24 02:05 20083017

和大多数单例的使用方法一样,没什么要特别注意的。这里面有好几种使用方式,根据自己的使用场景去选择,头文件注释里都有写集中使用方式和使用场景。如果不清楚细节就无脑用继承 util::design_pattern::singleton<singleton_class>

owent avatar May 30 '24 02:05 owent

这个实现的原因是多方面的,比如上面图里这种简单得实现的几个问题:

  • 从线程安全的角度,这么写并不能保证所有平台和编译环境线程安全。
  • 从生命周期管理的角度,这么写很难处理多个singleton互相引用的时候优雅退出。
  • 从符号隔离的角度,这么写可能有ABI冲突。

具体问题要具体分析的,解决方案也不是唯一的,看你从什么角度去看待和处理。

大佬 这个代码我基本看懂了,一个侵入的,一个不侵入, 有个内部类控制释放 单例这块儿有资料吗 想学习一下

20083017 avatar Jun 06 '24 13:06 20083017

这就是基本的设计模式,去看设计模式的书籍或者资料就行了。

owent avatar Jun 07 '24 06:06 owent