更新時(shí)間:2022-10-27 來(lái)源:黑馬程序員 瀏覽量:
線程也可以被稱(chēng)為輕量進(jìn)程,在程序的執(zhí)行流中線程是最小的單元。線程ID、當(dāng)前計(jì)算機(jī)的指令指針、寄存器集合和堆棧組成了一個(gè)標(biāo)準(zhǔn)的線程。在進(jìn)程中,線程屬于實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位。線程沒(méi)有私有的系統(tǒng)資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個(gè)線程擁有創(chuàng)建和撤銷(xiāo)另一個(gè)線程的功能,在同一個(gè)進(jìn)程中,多個(gè)線程之間可以并發(fā)進(jìn)行。
線程是程序中一個(gè)單一的順序控制流程。執(zhí)行單元在進(jìn)程之內(nèi),是相對(duì)獨(dú)立且可調(diào)度的。它也是系統(tǒng)獨(dú)立調(diào)度和分派CPU的基本單位指令運(yùn)行時(shí)的程序的調(diào)度單位。在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,被稱(chēng)為多線程。Python多線程用于I/O操作密集型任務(wù),如SocketServer網(wǎng)絡(luò)并發(fā)、網(wǎng)絡(luò)爬蟲(chóng)。
現(xiàn)代處理器都是多核心的,能同時(shí)處理幾個(gè)線程取決于是幾核的處理器,多線程執(zhí)行程序看起來(lái)是同時(shí)進(jìn)行,實(shí)際上是CPU在多個(gè)線程之間快速切換執(zhí)行,這中間就涉及了上下文切換。所謂的上下文切換,就是指一個(gè)線程Thread被分配的時(shí)間片用完后,線程的信息被保存起來(lái),CPU執(zhí)行另外的線程,再到CPU讀取線程Thread的信息并繼續(xù)執(zhí)行Thread的過(guò)程。