設計模式 Singleton

2021-05-23 00:05:04 字數 632 閱讀 3636

關於singleton模式的理解與思考

1 singleton模式最常用的解決方案是什麼?

2 singleton如何保證執行緒安全性?

3 singleton物件的析構如何完成?

singleton模式用來保證乙個程序中只有乙個某型別的實體,也就是說程序中的多執行緒可能共享該實體。共享該實體是指共享該實體的私有變數及公有變數,也就是說該singleton實體存在著保證執行緒安全的責任。什麼叫執行緒安全:我們說一段**是執行緒安全的,是指當多執行緒併發訪問這段**時不會產生不可確定的結果。

為保證執行緒安全,對singleton實體的資料成員的訪問要小心控制。

singleton實體往往通過乙個靜態變數來控制,程式通過測試該靜態變數來判斷是否需要生成新的實體。在多執行緒環境下,對該靜態變數的測試成了最不安全的地方,有可能生成多個singleton實體。執行緒安全的保證機制是,對該靜態變數的測試需要加鎖。加鎖顯然要用的pthread執行緒庫。

由於多執行緒共享乙個singleton實體,如何保證singleton實體析構時的安全?可以為乙個singleton實體設乙個引用計數,當乙個執行緒析構該實體時,首先使引用計數減一,然後判斷引用計數是否為0,若是0,則析構;若不是零則返回。在實現中,引用計數顯然要用乙個私有靜態變數來實現,析構時同樣要用鎖來保證執行緒安全。

設計模式Singleton

設計模式singleton 引言 相信大多數拜讀過 gang of four erich gamma,richard helm,ralph johnson,john vlissides 的經典之作 design pattern 的同僚們,對這本書一定推崇有加。曾有人這麼宣告 只有在讀過 design...

Singleton設計模式

1 singleton模式。singleton 譯為單件或單態 模式是設計模式中比較簡單而常用的模式。有些時候在整個應用程式中,會要求某個類有且只有乙個例項,這個時候可以採用singleton模式進行設計。用singleton模式設計的類不僅能保證在應用中只有乙個例項,而且提供了一種非全域性變數的方...

singleton設計模式

有很多情況需要只生成乙個物件,例如大家常用的任務管理器 這就需要單例設計模式了 不多說直接上 1.餓漢式 public class singleton 2.在內部生成物件,也要私有化 private static singleton instance new singleton 3.公共方法呼叫返回...