Num01–>線程
線程是操作系統(tǒng)中能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。
一個(gè)線程指的是進(jìn)程中一個(gè)單一順序的控制流。
一個(gè)進(jìn)程中可以并發(fā)多條線程,每條線程并行執(zhí)行不同的任務(wù)。
Num02–>進(jìn)程
進(jìn)程就是一個(gè)程序在一個(gè)數(shù)據(jù)集上的一次動(dòng)態(tài)執(zhí)行過程。
進(jìn)程有以下三部分組成:
1,程序:我們編寫的程序用來描述進(jìn)程要完成哪些功能以及如何完成。
2,數(shù)據(jù)集:數(shù)據(jù)集則是程序在執(zhí)行過程中需要的資源,比如圖片、音視頻、文件等。
3,進(jìn)程控制塊:進(jìn)程控制塊是用來記錄進(jìn)程的外部特征,描述進(jìn)程的執(zhí)行變化過程,系統(tǒng)可以用它來控制和管理進(jìn)程,它是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)記。
Num03–>進(jìn)程和線程的區(qū)別:
1、運(yùn)行方式不同:
進(jìn)程不能單獨(dú)執(zhí)行,它只是資源的集合。
進(jìn)程要操作CPU,必須要先創(chuàng)建一個(gè)線程。
所有在同一個(gè)進(jìn)程里的線程,是同享同一塊進(jìn)程所占的內(nèi)存空間。
2,關(guān)系
進(jìn)程中第一個(gè)線程是主線程,主線程可以創(chuàng)建其他線程;其他線程也可以創(chuàng)建線程;線程之間是平等的。
進(jìn)程有父進(jìn)程和子進(jìn)程,獨(dú)立的內(nèi)存空間,唯一的標(biāo)識(shí)符:pid。
3,速度
啟動(dòng)線程比啟動(dòng)進(jìn)程快。
運(yùn)行線程和運(yùn)行進(jìn)程速度上是一樣的,沒有可比性。
線程共享內(nèi)存空間,進(jìn)程的內(nèi)存是獨(dú)立的。
4,創(chuàng)建
父進(jìn)程生成子進(jìn)程,相當(dāng)于復(fù)制一份內(nèi)存空間,進(jìn)程之間不能直接訪問
創(chuàng)建新線程很簡單,創(chuàng)建新進(jìn)程需要對(duì)父進(jìn)程進(jìn)行一次復(fù)制。
一個(gè)線程可以控制和操作同級(jí)線程里的其他線程,但是進(jìn)程只能操作子進(jìn)程。
5,交互
同一個(gè)進(jìn)程里的線程之間可以直接訪問。
兩個(gè)進(jìn)程想通信必須通過一個(gè)中間代理來實(shí)現(xiàn)。
Num04–>幾個(gè)常見的概念
1,什么的并發(fā)和并行?
并發(fā):微觀上CPU輪流執(zhí)行,宏觀上用戶看到同時(shí)執(zhí)行。因?yàn)閏pu切換任務(wù)非常快。
并行:是指系統(tǒng)真正具有同時(shí)處理多個(gè)任務(wù)(動(dòng)作)的能力。
2,同步、異步和輪詢的區(qū)別?
同步任務(wù):B一直等著A,等A完成之后,B再執(zhí)行任務(wù)。(打電話案例)
輪詢?nèi)蝿?wù):B沒有一直等待A,B過一會(huì)來問一下A,過一會(huì)問下A
異步任務(wù):B不需要一直等著A, B先做其他事情,等A完成后A通知B。(發(fā)短信案例)
Num05–>進(jìn)程和線程的優(yōu)缺點(diǎn)比較
首先,要實(shí)現(xiàn)多任務(wù),通常我們會(huì)設(shè)計(jì)Master-Worker模式,Master負(fù)責(zé)分配任務(wù),Worker負(fù)責(zé)執(zhí)行任務(wù),因此,多任務(wù)環(huán)境下,通常是一個(gè)Master,多個(gè)Worker。
如果用多進(jìn)程實(shí)現(xiàn)Master-Worker,主進(jìn)程就是Master,其他進(jìn)程就是Worker。
新聞熱點(diǎn)
疑難解答
圖片精選