多執行緒程式設計引發的問題:死鎖、無限延遲、資料競爭等。併發程式設計包括多工(多程序)和多執行緒。
使用多執行緒程式設計時需包含標頭檔案,具體測試程式**如下:
死鎖問題:下例說明了出現死鎖的情況,當臨界區要求使用2個及以上的互斥鎖時,若加鎖的順序不一致,可能導致死鎖。因此為避免死鎖程式猿要保證加鎖的順序一致,避免發生死鎖,也可以使用c++庫函式lock函式按照順序預先加鎖,再使用lock_guard智慧型解鎖。
#include #include #include #include using namespace std;
class loffile
void shared_print(string str,int i)
導致死鎖的情況:程式一直被掛起。。。
以下為unique_lock和once_flag的使用例項說明,不過unique_lock相對於lock_guard開銷更大。
#include #include #include #include using namespace std;
class loffile
void shared_print(string str,int i));//使用once_flag可以只呼叫依次開啟檔案函式,從而節省開銷
unique_locklocker(m_mu);//unique_lock相對於lock_guard具有更好的彈性,從而 能夠給確定的**段加鎖
//同時,其物件傳遞時交出所有權,使用defer_lock引數後,就可以使用lock和unlock實現彈性加鎖
fout
//.......
locker2.lock();
//.......
locker2.unlock();
//.......
} private:
mutex m_mu;
once_flag m_flag;
ofstream fout;
};void fun2(loffile& lof)
int main()
《C 物件導向多執行緒程式設計》讀後感
2010 10 19 2010 12 12 閱讀方式 精讀,除附錄部分關於非 win32 系統外的 api部分。圖書介質 掃瞄 pdf 讀後感用了將近 2個月的時間讀完了 c 物件導向多執行緒程式設計 這本書。市面上系統的介紹多執行緒技術的書並不是很多。當初選擇了這本書來讀很大層面上是因為譯者序言中...
物件導向程式設計簡介
1.什麼是物件導向 物件導向就是更多的去考慮怎樣建立乙個物件來完成這個程式,而不是怎樣去計算。不止程式設計,生活中,也存在很多這種物件導向或者面向過程的例子。例如 吃 是乙個面向過程的說法,注重吃。狗吃糧,則是乙個物件導向的說法,針對物件狗。2.物件導向和面向過程的區別 面向過程 呼叫方式為 動作 ...
物件導向程式設計思想概覽(四)多執行緒
一 簡介 本講通過生活中的事例 家庭主婦進行燒水 洗衣 清掃 做飯四項活動,認識什麼是執行緒,學習理解執行緒的生命週期和建立方法,理解什麼是多執行緒並學習其如何應用。為接下來執行緒的同步起到鋪墊作用。二 主要內容 三 詳細內容 3.1 執行緒的認識 3.2 執行緒的生命週期 新建狀態 就緒狀態 執行...