用模板統一對多執行緒變數的使用

2021-07-11 20:40:57 字數 1242 閱讀 9434

有時候需要定義全域性變數供多個執行緒使用,為了對變數進行保護,需要對其進行加鎖的操作

如果全域性變數較多,每個變數都進行加鎖的操作,會導致**繁瑣混亂

使用類模板,可以將加鎖/解鎖的操作統一

#include 

#include

#include

#include

template

class teplttest

inline

void unlock()

inline

void initializelock()

inline

void deinitializelock()

private:

t tepltt;

pthread_mutex_t m_mutex;

};template

teplttest::teplttest()

template

teplttest::~teplttest()

template

bool teplttest::operator == (const t& cmp)

template

bool teplttest::operator != (const t& cmp)

template

bool teplttest::operator ! ()

template

void teplttest::operator = (const t& val)

template

teplttest::operator t()

int main()

上面的**過載了 =、==、!、!=、以及型別轉換等操作符,這樣變數就可以保持原有的使用方式

因為使用了模板的方式,所以在定義這些變數後,他們就是由我們定義的teplttest類例項化出來的物件,c++不允許把類的物件轉換為基本的資料型別,因此通過型別轉換函式來解決這個問題。

定義型別轉換函式一般形式:

operator 目標型別()

目標型別是所要轉化成的型別名,既可以是預定義及基本型別也可以是自定義型別。型別轉換函式的函式名(operator 目標型別)前不能指定返回型別,且沒有引數但在函式體最後一條語句一般為return語句,返回的是目標型別的資料。

使用資料庫統一對通知管理

最近在專案中,運用到了改變使用者狀態,實現訊息推送的功能,開始找了很多資料,都和實際的專案運用的不相符合,這裡總結下專案中如何解決問題 一般是使用觀察者模式 有興趣的可以具體了解,感覺和activemq的機制很像,實現發布訂閱和點對點的模式等等。專案中的辦法是,使用一張中間表對資料統一進行管理,具體...

c 下使用讀寫鎖控制多執行緒使用統一私有變數

今天在乙個類a中定義了私有變數member,然後定義了read和write方法用於讀取該變數和設定該變數。但是在使用時是在類b中定義了乙個a的物件a,然後在a中啟動了乙個執行緒t1,在t1中呼叫a.write 又啟動了乙個執行緒t2,在其中呼叫了a.read 這樣算上主線程,總共3個執行緒,裡面對私...

多執行緒中條件變數的使用

如果想要實現在乙個執行緒中需要一直等待某種條件被滿足的時候,該執行緒才會進行處理,這個時候可以使用條件變數的方式來實現 乙個執行緒中進行wait,另一線程中當條件滿足時發出通知notify,這樣就不需要一直進行while迴圈進行判斷條件了 例如生產者和消費者情況 include include in...