C 實現多執行緒 等待乙個主線程傳送的資料

2021-10-24 16:38:16 字數 2539 閱讀 5800

如下**的實現功能為:

乙個主線程不斷的接收到來自伺服器的資料,然後不同子程式分別根據接收到的資料來決定是否執行,第乙個和**塊的內容是執行每個函式內部的乙個迴圈後立馬停止 ,第二個**塊表示一直執行某乙個函式,等待主線程接收資料變換後停止。

#include

#include

#include

#include

#include

std::mutex mut;

std::queue<

int> data_queue;

//-------------------①

std::condition_variable data_cond;

int a=4;

using

namespace std;

// 定義乙個傳送資料的函式來模擬不停的從伺服器接收資料

void

recievedata()

}void

funct1()

);//-------------------⑤

cout << a;

std::cout <<

"after wait1"

<< std::endl;

a =4;

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

//process(data);}}

void

funct2()

);//-------------------⑤

std::cout <<

"after wait2"

<< std::endl;

a =4;

lk.unlock()

;//-------------------⑥

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

//process(data);}}

void

funct3()

);//-------------------⑤

std::cout <<

"after wait3"

<< std::endl;

a =4;

lk.unlock()

;//-------------------⑥

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

// 定義乙個傳送資料的函式來模擬不停的從伺服器接收資料

void

recievedata()

}void

funct1()

);//-------------------⑤

cout << a;

std::cout <<

"after wait1"

<< std::endl;

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

//process(data);}}

void

funct2()

);//-------------------⑤

std::cout <<

"after wait2"

<< std::endl;

lk.unlock()

;//-------------------⑥

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

//process(data);}}

void

funct3()

);//-------------------⑤

std::cout <<

"after wait3"

<< std::endl;

lk.unlock()

;//-------------------⑥

//假設處理資料data的函式process要花費大量時間,所以提前解鎖

//process(data);}}

intmain()

C 主線程等待子執行緒執行結束

佐左佑右 原文 c 主線程等待子執行緒執行結束 由於主程式中呼叫matlab的dll檔案進行計算要用較長的時間,主介面會有很長時間的卡頓,造成的使用者感受十分不好,因此我想在呼叫時,將呼叫放入子執行緒中,然後在主線程中彈出乙個提示框,顯示資料正在載入,等子執行緒執行結束後,主線程繼續工作。使用的是中...

python多執行緒爬蟲時,主線程一直等待錯誤。

1 抓取 的 資訊時,遇到了加上守護執行緒 程式執行完主線程,唰的一下就結束了,子執行緒在 嗯,丟掉了 t.setdaemon true 設定守護執行緒把上邊那句注釋掉後,子執行緒 emmmmm 執行了,然後就一直在等待 等乙個不知道是誰的誰。然後就注釋掉下邊那段話 for q in self.ur...

多執行緒主線程等待子執行緒都執行完成才執行

1.建立countdownlatch物件,設定子執行緒的數量 countdownlatch countdownlatch new countdownlatch size 其中size就是子執行緒的數量 2.開啟執行緒執行方法 壓縮生成.tbwj file bidfile ziputil.zip te...