1 #include <iostream>
2 #include <string>
3
4 using namespace std;
5
6 //懒汉式
7 class Singelton
8 {
9 public:
10 static Singelton* getInstance();
11 ~Singelton();
12
13 private:
14 Singelton();
15 private:
16 static Singelton *m_psl;
17 pthread_mutex_t singleton::mutex;
18 };
19
20 Singelton::Singelton()
21 {
22 }
23
24 Singelton::~Singelton()
25 {
26 if (m_psl != nullptr)
27 {
28 delete m_psl;
29 m_psl = nullptr;
30 }
31 }
32
33 Singelton* Singelton::getInstance()
34 {
35 if (m_psl == nullptr)
36 {
37 pthread_mutex_lock(&mutex);
38 if (m_psl == nullptr)
39 {
40 m_psl = new Singelton;
41 }
42 pthread_mutex_unlock(&mutex);
43 }
44 return m_psl;
45 }
46
47 Singelton* Singelton::m_psl = nullptr;
48 pthread_mutex_t Singelton::mutex;
49
50 //饿汉式
51 class Singelton
52 {
53 public:
54 static Singelton* getInstance();
55 ~Singelton();
56
57 private:
58 Singelton();
59 private:
60 static Singelton *m_psl;
61 };
62
63 Singelton::Singelton()
64 {
65 }
66
67 Singelton::~Singelton()
68 {
69 if (m_psl != nullptr)
70 {
71 delete m_psl;
72 m_psl = nullptr;
73 }
74 }
75
76 Singelton* Singelton::getInstance()
77 {
78 return m_psl;
79 }
80
81 Singelton *Singelton::m_psl = new Singelton;