? ?即使是單核處理器也支持多線程執(zhí)行代碼功蜓,CPU通過給每個線程分配CPU時間片來實現(xiàn)這個機制。時間片是CPU分配給各個線程的時間宠蚂,因為時間片非常短式撼,所以CPU通過不停地切換線程執(zhí)行,讓我們感覺多個線程是同時執(zhí)行的求厕,時間片一般是幾十毫秒(ms)著隆。CPU通過時間片分配算法來循環(huán)執(zhí)行任務(wù)扰楼,當(dāng)前任務(wù)執(zhí)行一個時間片后會切換到下一個任務(wù)。但是美浦,在切換前會保存上一個任務(wù)的狀態(tài)弦赖,以便下次切換回這個任務(wù)時,可以再加載這個任務(wù)的狀態(tài)抵代。所以任務(wù)從保存到再加載的過程就是一次上下文切換。
? ? 這就像我們同時讀兩本書忘嫉,當(dāng)我們在讀一本英文的技術(shù)書時荤牍,發(fā)現(xiàn)某個單詞不認(rèn)識,于是便打開中英文字典庆冕,但是在放下英文技術(shù)書之前康吵,大腦必須先記住這本書讀到了多少頁的第多少行,等查完單詞之后访递,能夠繼續(xù)讀這本書晦嵌。這樣的切換是會影響讀書效率的,同樣上下文切換也會影響多線程的執(zhí)行速度拷姿。