#include "pch.h"
#include#include#include using namespace std;
void myprint(int num)
int main()
for (auto iter = mythread.begin();iter != mythread.end(); iter++)
std:cout << "hello world!" << std::endl; //整個程序退出
return 0;
}
執行結果
多個執行緒執行順序是亂的,與作業系統排程機制有關;
主線程等待所有子執行緒執行結束,最後主線程結束,推薦這種join寫法,更容易寫出穩定程式;
把thread物件放入容器裡管理,方便對大量執行緒管理。
#include "pch.h"
#include#include#include using namespace std;
vectorg_v = ;//共享資料,唯讀
void myprint(int num)
for (auto iter = mythread.begin();iter != mythread.end(); iter++)
std::cout << "hello world!" << std::endl; //整個程序退出
唯讀資料是安全穩定的,不需要特別處理手段,直接讀取即可;
2個執行緒寫,8個執行緒讀,沒有特別處理,程式肯定會崩潰;
最簡單的處理:讀的時候不能寫,寫的時候不能讀,2個執行緒不能同時寫,8個執行緒不能同時讀。(也就是10個執行緒每次只有乙個在寫共享資料,其他執行緒讀寫操作等待,)
寫分為10小步:由於任務切換,導致各種預料之外的事發生,最嚴重的是崩潰;
建立多個執行緒 資料共享問題分析
join 多個執行緒執行順序是亂的,跟作業系統內部對執行緒的排程機制有關。主線程等待子執行緒執行完畢後才執行 void myprint int item int main for auto iter mythread.begin iter mythread.end iter cout hello w...
6 4建立多個執行緒 資料共享問題
a 多個執行緒執行順序是亂的,跟作業系統內部對執行緒的執行排程機制有關 b 主線程等待所有子執行緒執行結束,最後主線程結束,推薦使用這種join的寫法,更容易寫出穩定的程式 c 咱們把thread物件放入到容器裡管理,看起開像個thread物件陣列,這對我們一次建立大量執行緒並對大量執行緒進行管理很...
6 多個執行緒的共享資料
1 方式 1,如果每個執行緒執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料,例如,賣票系統就可以這麼做。2,如果每個執行緒執行的 不同,這時候需要用不同的runnable物件,例如,設計4個執行緒。其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減1,...