直播網(wǎng)站怎么做站長(zhǎng)工具百度百科
文章目錄
- 線程的實(shí)現(xiàn)方式和多線程模型
- 總覽
- 線程的實(shí)現(xiàn)方式
- 用戶級(jí)線程
- 內(nèi)核級(jí)線程
- 多線程模型
- 一對(duì)一
- 多對(duì)一
- 多對(duì)多
- 小結(jié)
- 線程的狀態(tài),轉(zhuǎn)換,組織,控制
- 總覽
- 線程的狀態(tài)與轉(zhuǎn)換
- 線程的組織與控制
線程的實(shí)現(xiàn)方式和多線程模型
總覽
線程的實(shí)現(xiàn)方式
用戶級(jí)線程
程序自己通過自己設(shè)計(jì)的線程庫實(shí)現(xiàn)線程管理調(diào)度
如QQ有三個(gè)功能,這三個(gè)功能需要同時(shí)進(jìn)行,通過進(jìn)程實(shí)現(xiàn)就是三個(gè)進(jìn)程分別實(shí)現(xiàn)這三個(gè)功能
如果由一個(gè)進(jìn)程實(shí)現(xiàn)?相當(dāng)于并發(fā)執(zhí)行三個(gè)功能
線程的管理工作:由線程庫(如上面通過while),不是操作系統(tǒng)。
線程切換由程序自己的線程庫來完成,不需要CPU變態(tài)
操作系統(tǒng)不能意識(shí)到用戶級(jí)線程的存在,它只是在執(zhí)行進(jìn)程的代碼,代碼中的線程庫部分能夠?qū)崿F(xiàn)并發(fā)執(zhí)行各個(gè)線程
優(yōu)點(diǎn):切換線程只需要在用戶態(tài)完成
缺點(diǎn):被阻塞在某段代碼時(shí)整個(gè)進(jìn)程的其他線程都會(huì)阻塞,且多個(gè)線程都是運(yùn)行在一個(gè)CPU的(CPU的調(diào)度單位依然是進(jìn)程)
內(nèi)核級(jí)線程
線程的管理工作由操作系統(tǒng)完成
線程的切換需要CPU變態(tài)(需要操作系統(tǒng)介入)
引入內(nèi)核級(jí)線程后,CPU調(diào)度的基本單位是線程,多個(gè)線程也可以分派到多個(gè)CPU上并行運(yùn)行
多線程模型
一對(duì)一
多對(duì)一
多對(duì)多
此時(shí)內(nèi)核級(jí)線程與用戶級(jí)線程的對(duì)應(yīng)關(guān)系由有兩種
一個(gè)內(nèi)核級(jí)線程對(duì)應(yīng)多個(gè)用戶級(jí)線程就是之前的多對(duì)一的情況
而一個(gè)內(nèi)核級(jí)線程對(duì)應(yīng)一個(gè)用戶級(jí)線程就是之前的一對(duì)一情況
小結(jié)
線程的狀態(tài),轉(zhuǎn)換,組織,控制
總覽
線程的狀態(tài)和轉(zhuǎn)換與進(jìn)程的差不多
線程的狀態(tài)與轉(zhuǎn)換
時(shí)間用完是并發(fā)執(zhí)行中的輪換的原因
我們通常關(guān)注這三個(gè)狀態(tài)
線程的組織與控制
保存堆棧指針是在保存該線程的棧頂?shù)刂泛蜅5椎刂?#xff0c;切換線程后,該線程的堆棧信息依然在內(nèi)存中
組織線程表的類型可以不同,如將系統(tǒng)的線程都組成一張表,或者按照進(jìn)程來組成線程表,又或者按照線程狀態(tài)來分狀態(tài)組織線程表
控制就是實(shí)現(xiàn)線程狀態(tài)的切換和線程的調(diào)度