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