兩個(gè)線程讀寫同一個(gè)隊(duì)列 在多核CPU下,同一進(jìn)程下的多個(gè)線程可以并行運(yùn)行嗎?
在多核CPU下,同一進(jìn)程下的多個(gè)線程可以并行運(yùn)行嗎?CPU在某個(gè)時(shí)間點(diǎn)只能執(zhí)行一個(gè)線程,但由于多核或雙核的原因,多線程不叫多線程。原因是當(dāng)許多線程并行執(zhí)行時(shí),CPU會(huì)根據(jù)特定的線程調(diào)度算法頻繁地切換線
在多核CPU下,同一進(jìn)程下的多個(gè)線程可以并行運(yùn)行嗎?
CPU在某個(gè)時(shí)間點(diǎn)只能執(zhí)行一個(gè)線程,但由于多核或雙核的原因,多線程不叫多線程。
原因是當(dāng)許多線程并行執(zhí)行時(shí),CPU會(huì)根據(jù)特定的線程調(diào)度算法頻繁地切換線程。當(dāng)執(zhí)行線程需要IO操作或內(nèi)存訪問時(shí),CPU可以完全放棄該線程,而將其他線程調(diào)度到線程就緒隊(duì)列中。被放棄的線程將進(jìn)入阻塞狀態(tài)、IO操作或內(nèi)存訪問,在內(nèi)存訪問操作完成后,線程可以進(jìn)入線程就緒隊(duì)列。
一般意義上的多線程是指CPU根據(jù)特定的線程調(diào)度算法切換線程,因此在一段時(shí)間內(nèi),可以看到許多線程同時(shí)執(zhí)行。
事實(shí)上,只有一個(gè)線程在某個(gè)時(shí)間點(diǎn)運(yùn)行。