或許有些同學(xué)對于單核多線程和多核多線程有點誤區(qū),因為會聽到一些同學(xué)問為什么單核能處理多線程,總結(jié)了一些干貨,下面會通俗說明下。
單核多線程指的是單核CPU輪流執(zhí)行多個線程,通過給每個線程分配CPU時間片來實現(xiàn),只是因為這個時間片非常短(幾十毫秒),所以在用戶角度上感覺是多個線程同時執(zhí)行。
在這里也引出多線程上下文切換,也就是CPU通過時間片分配算法來循環(huán)執(zhí)行任務(wù),當前任務(wù)執(zhí)行一個時間片后會切換到下一個任務(wù)。并且在切換前會保存上一個任務(wù)的狀態(tài),當切換回上一個任務(wù)時可以繼續(xù)加載該任務(wù)的狀態(tài),從任務(wù)保存到再加載的過程就是一次上下文切換。
例如:我們在看網(wǎng)上大牛的博客筆記的時候,看到別人引用到自己不知道的技術(shù)的時候,我們往往會先去大概了解下這個技術(shù)到底是什么,能做什么等等,但是在這之前我們需要加個標簽(或者其他標識)記住這篇博客我看到哪里。把這個技術(shù)了解完之后再返回去看這篇博客,從標記的地方繼續(xù)往下看(這就是上下文切換的例子)。不過在看到一半然后去看別的文章,會影響到效率,多線程也一樣,會影響到多線程執(zhí)行速度。
多核多線程,可以把多線程分配給不同的核心處理,其他的線程依舊等待,相當于多個線程并行的在執(zhí)行,而單核多線程只能是并發(fā)。
聯(lián)系客服