Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170227
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 638
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:59
个人简介

喜欢coding,因为那是一件伟大的事情,是将无生命的IC赋予灵魂的过程,让我拥有了和上帝一样的成就感。(w1c2g3@163.com)

文章分类

全部博文(60)

文章存档

2017年(7)

2016年(41)

2015年(1)

2014年(4)

2013年(7)

我的朋友

分类: C/C++

2016-10-30 22:47:18

单件模式 确保一个类只有一个实例,并提供一个全局访问点。




  1. #include <iostream>
  2. #include <string>
  3. #include <pthread.h>


  4. using namespace std;


  5. class Singleton {
  6. public:
  7.     static Singleton *getInstance() {
  8.         if (uniqueInstance == NULL) {
  9.             pthread_mutex_lock (&mutex);
  10.             if (uniqueInstance == NULL) {
  11.                 uniqueInstance = new Singleton();
  12.             }
  13.             pthread_mutex_unlock(&mutex);
  14.         }

  15.         return uniqueInstance;
  16.     }
  17.     
  18. private:
  19.     Singleton() {}
  20.     static Singleton *uniqueInstance;
  21.     static pthread_mutex_t mutex;
  22. };

  23. Singleton *Singleton::uniqueInstance = NULL;
  24. pthread_mutex_t Singleton::mutex = PTHREAD_MUTEX_INITIALIZER;


  25. void *test_singleton(void *arg) {
  26.     Singleton *s = Singleton::getInstance();
  27.     cout << s << endl;
  28.     return NULL;
  29. }

  30. int main(int argc, char **argv)
  31. {
  32.     pthread_t writer_id[10];

  33.     for (int i = 0; i < 10; ++i)
  34.     {
  35.         pthread_create (&writer_id[i], NULL, test_singleton, NULL);
  36.     }

  37.     return 0;
  38. }

阅读(616) | 评论(0) | 转发(0) |
0

上一篇:简单工厂模式

下一篇:命令模式

给主人留下些什么吧!~~