建立多個執行緒 資料共享問題分析

2021-09-01 19:48:14 字數 699 閱讀 9169

join

多個執行緒執行順序是亂的,跟作業系統內部對執行緒的排程機制有關。

主線程等待子執行緒執行完畢後才執行

void myprint(int item)

int main()

for (auto iter = mythread.begin(); iter != mythread.end(); ++iter)

cout << "hello world" << endl;

return 0;

}

資料共享問題分析

1.唯讀資料:安全穩定

2.有讀有寫:如果讀和寫一起執行,程式會崩潰。

不崩潰處理:最簡單的方法就是讀和寫分開。

但是如果任務一直切換的,可能會有詭異的事情發生(甚至可能崩潰)

共享資料的保護案例**:

網路遊戲伺服器。兩個自己建立的執行緒,乙個執行緒收集玩家的命令(用乙個數字代表玩家的命令)。乙個執行緒取出玩家的命令,並且執行玩家要幹的動作。

class a 

} void outmsgrecquene()

else

}}};

int main()

程式會崩潰。

6 4建立多個執行緒 資料共享問題

a 多個執行緒執行順序是亂的,跟作業系統內部對執行緒的執行排程機制有關 b 主線程等待所有子執行緒執行結束,最後主線程結束,推薦使用這種join的寫法,更容易寫出穩定的程式 c 咱們把thread物件放入到容器裡管理,看起開像個thread物件陣列,這對我們一次建立大量執行緒並對大量執行緒進行管理很...

建立多個執行緒及資料共享問題

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 h...

6 多個執行緒的共享資料

1 方式 1,如果每個執行緒執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料,例如,賣票系統就可以這麼做。2,如果每個執行緒執行的 不同,這時候需要用不同的runnable物件,例如,設計4個執行緒。其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減1,...