本章主要內(nèi)容
之前的章節(jié)中,我們通過(guò)創(chuàng)建std::thread對(duì)象來(lái)對(duì)線程進(jìn)行管理。在一些情況下,這種方式不可行了,因?yàn)樾枰诰€程的整個(gè)生命周期中對(duì)其進(jìn)行管理,并根據(jù)硬件來(lái)確定線程數(shù)量,等等。理想情況是將代碼劃分為最小塊,再并發(fā)執(zhí)行,之后交給處理器和標(biāo)準(zhǔn)庫(kù),進(jìn)行性能優(yōu)化。
另一種情況是,當(dāng)使用多線程來(lái)解決某個(gè)問(wèn)題時(shí),在某個(gè)條件達(dá)成的時(shí)候,可以提前結(jié)束。可能是因?yàn)榻Y(jié)果已經(jīng)確定,或者因?yàn)楫a(chǎn)生錯(cuò)誤,亦或是用戶執(zhí)行終止操作。無(wú)論是哪種原因,線程都需要發(fā)送“請(qǐng)停止”請(qǐng)求,放棄任務(wù),清理,然后盡快停止。
本章,我們將了解一下管理線程和任務(wù)的機(jī)制,從自動(dòng)管理線程數(shù)量和自動(dòng)管理任務(wù)劃分開(kāi)始。