boost之log的core

结构

core
filter
sink
attribute_set
record

core

core
- implementation* m_impl
implementation
+ sink_list m_sinks
+ shared_ptr< sinks::sink >m_default_sink
+ attribute_set m_global_attributes
+ filter m_filter
+ exception_handler_type m_exception_handler
+ bool m_enabled
lazy_singleton<implementation, core_ptr>

初始化

通过static core_ptr get()来初始化,其过程为

BOOST_LOG_API core_ptr core::get()
{
    return implementation::get();
}

会调用implementation的静态get方法,由于implementation继承lazy_singleton,其调用的是 lazy_singleton的get方法

template< typename DerivedT, typename StorageT = DerivedT >
class lazy_singleton {
public:
	static StorageT& get()
    {
        BOOST_LOG_ONCE_BLOCK()
        {
            DerivedT::init_instance();
        }
        return get_instance();
    }
};

会调用implementation的init_instance方法,其会调用lazy_singleton的get_instance方法

static void init_instance()
 {
     base_type::get_instance().reset(new core());
 }

lazy_singleton的get_instance方法得到shared_ptr<core>

static StorageT& get_instance()
{
    static StorageT instance;
    return instance;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值