全局唯一实例:instance(),为了确保其在多线程环境下能够被正确初始化,依照下例:
文件RadarParser.h:
class RadarParser
{
public:
static std::shared_ptr<RadarParser> instance();
private:
static std::shared_ptr<RadarParser> s_ParserPtr;
};
文件RadarParser.cpp:
static std::shared_ptr<RadarParser> RadarParser::s_ParserPtr;
static std::once_flag radar_parser_ptr;
void init_radarParser
{
s_ParserPtr.reset( new RadarParser());
}
std::shared_ptr<RadarParser> ParserPtr.::instance()
{
std::call_once(radar_parser_ptr,init_radarParser)://确保初始化函数init_radarParser只调一次
return s_ParserPtr;
}