單例模式:確保乙個類只有乙個例項,且提供乙個全域性訪問點
sig.h
#include
#include
using namespace std;
// 提前申請好資源,不會有競態
class mysgn
void say_hi()
protected: // 此處注意
mysgn() {}
private: // 此處注意
mysgn(const mysgn&);
mysgn& operator=(const mysgn&);
private:
static mysgn* _my_sgn;
};mysgn* mysgn::_my_sgn = new (std::nothrow) mysgn(); // 此處注意
// 延遲資源申請,double check + 鎖
class myfullsgn
pthread_mutex_unlock(&mutex);
}return _my_full_sgn;
}void say_hi()
protected: // 此處注意
myfullsgn() {}
private: // 此處注意
myfullsgn(const myfullsgn&);
myfullsgn& operator=(const myfullsgn&);
private:
static pthread_mutex_t mutex;
static myfullsgn* _my_full_sgn;
};pthread_mutex_t myfullsgn::mutex; // 此處注意
myfullsgn* myfullsgn::_my_full_sgn = null; // 此處注意
#include
#include
using namespace std;
int main()
2017-08-09更新 增加mutex資源管理
#include
#include
using namespace std;
class mutexlock
~mutexlock()
void
lock()
void unlock()
private:
pthread_mutex_t _mutex;
};class mutexlockguard
~mutexlockguard()
private:
mutexlock& _mutex_lock;
};class mysing
// unlock
}cout << "create done"
<< endl;
return _my_sing;
}void say_hi()
protected:
mysing() {}
private:
mysing(const mysing&);
mysing& operator=(const mysing&);
private:
static mutexlock _mutex_lock;
static mysing* _my_sing;
};mutexlock mysing::_mutex_lock;
mysing* mysing::_my_sing = null;
int main()
執行緒安全的單例模式(執行緒安全)示例
可以說單例模式是所有設計模式中最簡單的一種。單例模式就是說系統中對於某類的只能有乙個物件,不可能出來第二個。單例模式也是23中設計模式中在面試時少數幾個會要求寫 的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。1.多執行緒安全單例模式例項一 不使用同步鎖 public class s...
c 多執行緒單例模式 執行緒安全C 單例模式
我對此處記錄的單例模式有一些疑問 http us library ff650316.aspx 以下 摘自該文章 using system public sealed class singleton private static volatile singleton instance private ...
設計模式 單例模式(執行緒安全)
前言 單例模式是設計模式中比較簡單的一種,但是又因為簡單常見在面試中又是經常出現的乙個設計模式。所以必須要會啊。之前也只是會寫執行緒不安全的單例模式。單例模式 乙個類能返回物件乙個引用 永遠是同乙個 和乙個獲得該例項的方法 必須是靜態方法,通常使用getinstance這個名稱 當我們呼叫這個方法時...