線程安全的單例模式

下列程序是基于多線程下的互斥量鎖進行的單例模式。

<code>

class SingleInstance

{

public:

static SingleInstance* GetInstance();

static void deleteInstance();

void Print();

private:

SingleInstance();

~SingleInstance();

SingleInstance(const SingleInstance& signal);

const SingleInstance &operator=(const SingleInstance& signal);

private:

static SingleInstance* m_instance;

static mutex mymutex;

};

SingleInstance* SingleInstance::m_instance = nullptr;

mutex SingleInstance::mymutex;

SingleInstance* SingleInstance::GetInstance()

{

if (!m_instance)

{

unique_lock<mutex>lock(mymutex);

if (!m_instance)

{

m_instance = new SingleInstance();

}

}

return m_instance;

}

void SingleInstance::deleteInstance()

{

unique_lock<mutex>lock(mymutex);

if (m_instance)

{

delete m_instance;

m_instance = nullptr;

}

}

void SingleInstance::Print()

{

cout << "我的實例內存地址是:" << this << endl;

}

SingleInstance::SingleInstance()

{

std::cout << "構造函數(shù)" << std::endl;

}

SingleInstance::~SingleInstance()

{

std::cout << "析構函數(shù)" << std::endl;

}

void test0()

{

cout << "test0的線程id為: " << this_thread::get_id() << endl;

for (int i = 0; i < 5; ++i)

{

SingleInstance* single = SingleInstance::GetInstance();

single->Print();

}

}

void test1()

{

cout << "test1的線程id為: " << this_thread::get_id() << endl;

for (int i = 0; i < 5; ++i)

{

SingleInstance* single1 = SingleInstance::GetInstance();

single1->Print();

}

}

</code>

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 概念:java中單例模式是一種常見的設計模式,單例模式分三種:懶漢式單例、餓漢式單例、登記式單例三種。單例模式有一...
    can_4999閱讀 282評論 0 0
  • 簡介 單例模式是很常用的一種設計模式,在實現(xiàn)過程中要非常注意線程安全,我們會介紹四種方式來實現(xiàn)線程安全的單例模式:...
    Kai_Z閱讀 2,451評論 3 1
  • 1.餓漢式 實現(xiàn)代碼: public class MySingleton { // 1.餓漢式 private s...
    JackEason閱讀 1,471評論 1 0
  • 單例模式,保證一個類僅有一個實例,并提供一個訪問它們的全局訪問點。而在多線程的環(huán)境下,如果多個線程調用getIns...
    星月西閱讀 189評論 0 0
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,814評論 16 22

友情鏈接更多精彩內容