結(jié)論先放前面:“進(jìn)程是資源分配的最小單位,線程是CPU調(diào)度的最小單位”
首先晓淀,我們要知道,CPU是有單核和多核的區(qū)分盏档。同一時(shí)間段凶掰,一個(gè)核只能運(yùn)行一個(gè)進(jìn)程。但是我們平時(shí)使用的過程中蜈亩,會(huì)發(fā)現(xiàn)我們同時(shí)開啟的程序遠(yuǎn)比自身CPU的核數(shù)多懦窘,這又是為什么呢?簡(jiǎn)單來說勺拣,就是CPU的速度太快了奶赠,它在不停地切換進(jìn)程,快到我們感知不到(廢話)药有。
進(jìn)程毅戈,就是我們平時(shí)運(yùn)行的程序(QQ? 音樂? 瀏覽器等)苹丸,一個(gè)程序就是一個(gè)獨(dú)立的進(jìn)程(有些占用多個(gè)進(jìn)程,可以打開自己的任務(wù)管理器看看)苇经,共享CPU資源赘理。? ?
線程,其實(shí)也可以叫輕量級(jí)的進(jìn)程扇单,它與進(jìn)程是被包含關(guān)系商模。簡(jiǎn)單來說,進(jìn)程就像一個(gè)車間蜘澜,線程就是里面的工人施流。
但是,本質(zhì)來說鄙信,進(jìn)程和線程都是對(duì)CPU的工作時(shí)間段的一個(gè)描述瞪醋,這么說可能有點(diǎn)難理解。
打個(gè)比方装诡,我們打開了一個(gè)QQ银受,然后QQ這個(gè)進(jìn)程就獲得了CPU的一個(gè)核的10秒的使用權(quán);這10秒里鸦采,QQ開啟了A和B兩個(gè)線程為我們執(zhí)行程序宾巍,其中A線程為我們獲取我們的好友列表并展示出來,而B線程為我們推送了一則新聞渔伯。但是就像我上述的顶霞,一個(gè)核在一個(gè)時(shí)間段只能運(yùn)行一個(gè)進(jìn)程,更細(xì)點(diǎn)說锣吼,就是一個(gè)時(shí)間段只能執(zhí)行一個(gè)任務(wù)确丢。那怎么辦呢,QQ這個(gè)進(jìn)程吐限,可能會(huì)為A這個(gè)線程分配4秒先執(zhí)行,為B分配6秒后執(zhí)行褂始。這么說大家應(yīng)該就能理解了吧诸典。
進(jìn)程和線程的不同,最根本的就是粒度大小不同崎苗。