進(jìn)程
用來對(duì)應(yīng)一個(gè)應(yīng)用程序痕钢,每一個(gè)進(jìn)程對(duì)應(yīng)一定的內(nèi)存地址空間,每個(gè)進(jìn)程都有自己的內(nèi)存空間序六,不同的進(jìn)程運(yùn)行時(shí)不會(huì)相互干擾
進(jìn)程的缺點(diǎn)
進(jìn)程做事情的時(shí)候任连,里面有很多子任務(wù),只能逐個(gè)的去執(zhí)行子任務(wù)
線程的誕生
為了將進(jìn)程中的子任務(wù)分開執(zhí)行难咕,讓一個(gè)線程執(zhí)行一個(gè)子任務(wù),這樣一個(gè)進(jìn)程就會(huì)擁有多個(gè)線程距辆,每個(gè)線程負(fù)責(zé)一個(gè)獨(dú)立的子任務(wù)余佃。
進(jìn)程讓操作系統(tǒng)的并發(fā)性成為可能
線程讓進(jìn)程內(nèi)部并發(fā)成為可能
一個(gè)進(jìn)程雖然包括多個(gè)線程,但是這些線程是共同享有進(jìn)程的資源和地址空間
進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的基本單位
線程是操作系統(tǒng)進(jìn)行調(diào)度的基本單位
多線程會(huì)遇到的核心問題跨算,如果多個(gè)線程要同時(shí)訪問某個(gè)資源爆土,要怎么處理?
鎖
代表一個(gè)線程使用某個(gè)共享內(nèi)存時(shí)诸蚕,其他線程必須等它結(jié)束步势,才能使用這一塊內(nèi)存氧猬。
互斥鎖
防止多個(gè)線程同時(shí)讀寫某一內(nèi)存區(qū)域
信號(hào)量
某些內(nèi)存區(qū)域,只能給固定數(shù)目的線程使用坏瘩。叫做信號(hào)量盅抚。鎖是信號(hào)量=1的特殊情況。
總結(jié)
多進(jìn)程形式倔矾,允許多個(gè)任務(wù)同時(shí)運(yùn)行
多線程方式妄均,每個(gè)任務(wù)分成不同的子任務(wù)部分運(yùn)行