待修改 C 多執行緒程式設計學習筆記

2021-07-23 11:27:27 字數 1051 閱讀 5851

標頭檔案:#include建立執行緒 

void show(int x)

void print(string str,int i)

t1.join();

return 0;

}只要不將f洩露,就不會引起資源競爭。

死鎖,與解決死鎖的辦法

先寫乙個出現死鎖的小例子

#include #include #include #include #include using namespace std;

mutex mu;

class logfile

void print(string str,int i)

t1.join();

return 0;

}以上出現死鎖的原因是因為print將mutex1鎖住而print2需要mutex1,print2需要mutex2而此時mutex2被print鎖住。

解決辦法

void print(string str,int i));

//以上**保證檔案只被開啟一次。

多執行緒的條件變數

以下**為模擬生產者消費者模式,使用條件變數使消費者程序在等待生長過程中的多次迴圈,用條件變數在無產品時,自動休眠。

#include#include #include #include #include using namespace std;

queueq;

mutex mu;

condition_variable cond;

void fun1()

}void fun2());//先解鎖休眠程序,等待喚醒,喚醒後再加鎖

//這裡cond可能被自己啟用,稱為偽啟用,第二個引數為lamda函式,佇列不為空才會被啟用

data = q.front();

q.pop();

mu.unlock();

printf("消費者:%d\n",data);

count++;

printf("消費者迴圈等待次數:%d\n",count);

}}int main()

C 多執行緒程式設計學習筆記

建立執行緒 void fun 執行緒函式 thread t1 fun t1.join join 是兩個執行緒交匯的意思,工作執行緒和主線程在此處交匯,jion 之後的主線程會阻塞直到工作執行緒執行結束。detach 使執行緒函式脫離執行緒物件,即當執行緒物件銷毀了執行緒函式依然可能執行。通常不推薦這...

C 學習 多執行緒程式設計 多執行緒基礎

c 內建了對多執行緒程式設計的支援功能,所以相對於其他語言在多執行緒方面的問題,c 這裡就已經最小化或者不復存在。在.net framework 4.0中,c 中新增了兩個與多執行緒應用程式相關的重要功能 tpl 任務執行並行庫 和plinq 並行linq 兩者都提供對並行程式設計的支援,都可以利用...

C 多執行緒學習筆記

一 基本概念 bi d.z9k l b 0 程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。q7 j ka ik z b0 執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 ...