1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
// initializing a (waitd to the essentials) singleton, using std::once_flag.
// don't forget -pthread
#include <iostream>
#include <mutex>
struct Single
{
static Single *s_single;
static std::once_flag s_resourceFlag;
static void initialize()
{
std::cout << "initializing\n";
s_single = new Single;
}
static Single *instance()
{
std::call_once(s_resourceFlag, initialize);
return s_single;
}
};
Single *Single::s_single;
std::once_flag Single::s_resourceFlag;
int main()
{
Single::instance();
Single::instance();
}
|