秒殺多線程-一個(gè)經(jīng)典的多線程同步問(wèn)題
2023-01-31 20:00 作者:ベ計(jì)院小白隆ミ | 我要投稿
前面章節(jié):


程序描述
主線程啟動(dòng)10個(gè)子線程并將表示子線程序號(hào)的變量地址作為參數(shù)傳遞給子線程。子線程接收參數(shù) -> sleep(50) -> 全局變量++ -> sleep(0) -> 輸出參數(shù)和全局變量。
要求:
1.子線程輸出的線程序號(hào)不能重復(fù)。
2.全局變量的輸出必須遞增。
主要考察點(diǎn)有二個(gè):
1.主線程創(chuàng)建子線程并傳入一個(gè)指向變量地址的指針作參數(shù),由于線程啟動(dòng)須要花費(fèi)一定的時(shí)間,所以在子線程根據(jù)這個(gè)指針訪問(wèn)并保存數(shù)據(jù)前,主線程應(yīng)等待子線程保存完畢后才能改動(dòng)該參數(shù)并啟動(dòng)下一個(gè)線程。這涉及到主線程與子線程之間的同步。
2.子線程之間會(huì)互斥的改動(dòng)和輸出全局變量。要求全局變量的輸出必須遞增。這涉及到各子線程間的互斥。
代碼:

運(yùn)行結(jié)果是不確定的。
后面會(huì)運(yùn)用Windows平臺(tái)下各種手段包括關(guān)鍵段,事件,互斥量,信號(hào)量等等來(lái)解決這個(gè)問(wèn)題并作一份全面的總結(jié)。




參考:https://blog.csdn.net/MoreWindows/article/details/7442333