From 74004c3b3f9bda6b86c61b63ee8f7718b39e60d7 Mon Sep 17 00:00:00 2001 From: FengJungle Date: Sun, 20 Oct 2019 18:55:29 +0800 Subject: [PATCH] add Singleton Pattern --- 6.SingletonPattern/1.Picture/单例模式.vsdx | Bin 0 -> 41899 bytes .../1.Picture/单例模式UML图.png | Bin 0 -> 3195 bytes .../2.Code/Singleton/Singleton.h | 33 ++++++++++++ 6.SingletonPattern/2.Code/Singleton/main.cpp | 50 ++++++++++++++++++ README.md | 6 ++- 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 6.SingletonPattern/1.Picture/单例模式.vsdx create mode 100644 6.SingletonPattern/1.Picture/单例模式UML图.png create mode 100644 6.SingletonPattern/2.Code/Singleton/Singleton.h create mode 100644 6.SingletonPattern/2.Code/Singleton/main.cpp diff --git a/6.SingletonPattern/1.Picture/单例模式.vsdx b/6.SingletonPattern/1.Picture/单例模式.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..63881e947bd4d1b1a65829b97ac1862e0d512398 GIT binary patch literal 41899 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 literal 0 HcmV?d00001 diff --git a/6.SingletonPattern/1.Picture/单例模式UML图.png b/6.SingletonPattern/1.Picture/单例模式UML图.png new file mode 100644 index 0000000000000000000000000000000000000000..df48d4e5bc6e868469fdde3804753af8c7488bdc GIT binary patch literal 3195 zcmeH~`9IWa8^?#kIYfve3N0w9v6m?Onk`$FV-TYuJNYuB!8oXpEt(j+Q#iv2V;v+8 zVlafpEL5_@ES8Rad#0bx^DjKF*Ym@5-}m)--9KH|`*XeS``KL^v*X94j)6d+;}+(| z_8<_KEazOz$IV%7*Y5zFjVr?5%n*bdIlIJ3cwh$B1|U#fhQR)PUQW&*YVH~V0txl} z46go=N+<{+tb0#c!Bb^I>y(pTw)lz4gP|{!Z9#% zDCWW_`1GzT_c+c~WgIN`z$K8%YZSt*9(8_+(f?E0x{p+t@B6g`cRXgX=&Dk z%zyGYvEefgM)nOs%=?5NT>891ib(&Z8#3y1J@T z5mXA1kdVm8$cT6uUuW(m!+m4^y6x37Nx-lLrY@7mPa<2_XVE$yn4j*fmd*yT3_rq{ z?fj#-b{e|TNc1N#X@xhqsJT&l^?*6|&tla5P|zo=2YY@JvWN%HFR24FJbunIEF$$h z|0q}v**Ag#u?7i9R~nX(;23k^^9pUc6c~F0?C!>{za7@(bFHUOaj|Z?3Rb#piW{Nt_4?^ zv$VHhd?wyYxrFX^vejLDgmVlyyEPz8>avs8JwgJ1&%$DD5g=)#U9n0?ezuXma9U5E zdREG#FfvUvkC4*_o2__0fm`nrRIRnURQy0AD)#7i`f!-X=cyAzT0H8>>!C3XPYQJW zA63sphCJ;^OksOus~~2P3BAQB`Z<8LUF&Azt+=lI1SOJcy#5y#~UV92j^gZLK5Tt4gEMh8KWHg5scNdm@I`+$&jD zby7f$<3Hm5jBh_m&67p=q&-vT&ysRk*|=lZ+m|vs>0(e_LZZHQOGO#C?y2+W#_n&= z_6kHG=lf8|1(h_Pqa2L1su0zxMKA79W38+&3rn^co_OX^U8~-($zKhHZ1q-Iy`UJ zGqu}gD3d+6E$ejsb3F%-Qv716HysU?jUDX6M3vngN_S(rC(Ca^J+JwJ65>19+RWG zZik2hG=chcF3J5xf4*|6p&dWhSk37MxpRwx#bL~CVvSeV&1VocmijuUjX;*3c=y!b zTE!9aQNCz3l-!7!xsYu(ol1iY6h*E0GkCu5&xAOeY1yR$-tMWACq~jsD?fwhsRsX}^ms{OgAqZOI*63oBkzV!2f_6&m!@SV0j)CdoyD76GjsbA6!$ zTL(oHOhKy?*%&%sQ zctCYk04e5=0{M%C{IR0w>gLB*Df^g@*hZLhuI#eI<=dw|DOpiENpzKYnHo`+R1+NG zH)xmLK&)BFCjF*HTJndU_`HGp(PoQz;>l0YMx!(>e9J1jn*_eGmqQSvMZR9Dxcio^ zG?L@y95dWKfq_#H&;WK6+F<+yGpQSv`STr{8v#ePK^kuNmWc`<5H{~m%88rBw^M<9q#+z>3YsnFZXsj7={iYPie*l fn#!Tt`S*o2cva`7J~PER9|n+xiH$MN&@16Ti~xsa literal 0 HcmV?d00001 diff --git a/6.SingletonPattern/2.Code/Singleton/Singleton.h b/6.SingletonPattern/2.Code/Singleton/Singleton.h new file mode 100644 index 0000000..3ff8a6a --- /dev/null +++ b/6.SingletonPattern/2.Code/Singleton/Singleton.h @@ -0,0 +1,33 @@ +#ifndef __SINGLETON_H__ +#define __SINGLETON_H__ + +#include +#include +#include +using namespace std; + +class Singleton +{ +public: + static Singleton* getInstance(){ + if (instance == NULL){ + m_mutex.lock(); + if (instance == NULL){ + printf("µʵ\n"); + instance = new Singleton(); + } + m_mutex.unlock(); + } + return instance; + } +private: + Singleton(){} + + static Singleton* instance; + static std::mutex m_mutex; +}; + +Singleton* Singleton::instance = NULL; +std::mutex Singleton::m_mutex; + +#endif //__SINGLETON_H__ \ No newline at end of file diff --git a/6.SingletonPattern/2.Code/Singleton/main.cpp b/6.SingletonPattern/2.Code/Singleton/main.cpp new file mode 100644 index 0000000..bee839c --- /dev/null +++ b/6.SingletonPattern/2.Code/Singleton/main.cpp @@ -0,0 +1,50 @@ +#include +#include "Singleton.h" + +/*ģʽʵ*/ +/* +int main() +{ + Singleton *s1 = Singleton::getInstance(); + Singleton *s2 = Singleton::getInstance(); + + system("pause"); + return 0; +} +*/ + +/*̰߳ȫ ģʽ*/ +#include +#include + +//̣߳߳Ŀ5 +#define THREAD_NUM 5 + +unsigned int __stdcall CallSingleton(void *pPM) +{ + Singleton *s = Singleton::getInstance(); + int nThreadNum = *(int *)pPM; + Sleep(50); + //printf("̱߳Ϊ%d\n", nThreadNum); + return 0; +} + + +int main() +{ + HANDLE handle[THREAD_NUM]; + + //̱߳ + int threadNum = 0; + while (threadNum < THREAD_NUM) + { + handle[threadNum] = (HANDLE)_beginthreadex(NULL, 0, CallSingleton, &threadNum, 0, NULL); + //߳̽յʱܸ߳̿ıiֵ + threadNum++; + } + //֤߳ȫн + WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE); + + system("pause"); + return 0; +} \ No newline at end of file diff --git a/README.md b/README.md index 49ea5f4..944c8c2 100644 --- a/README.md +++ b/README.md @@ -31,4 +31,8 @@ 08.设计模式(八)——原型模式 -博客地址:https://blog.csdn.net/sinat_21107433/article/details/102642682 \ No newline at end of file +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102642682 + +09.设计模式(九)——单例模式 + +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102649056 \ No newline at end of file