更新時間:2021-10-09 10:34:45 來源:動力節(jié)點(diǎn) 瀏覽1255次
每個進(jìn)程提供執(zhí)行程序所需的資源。進(jìn)程具有虛擬地址空間、可執(zhí)行代碼、系統(tǒng)對象的開放句柄、安全上下文、唯一進(jìn)程標(biāo)識符、環(huán)境變量、優(yōu)先級類、最小和最大工作集大小以及至少一個執(zhí)行線程。每個進(jìn)程都以單個線程啟動,通常稱為主線程,但可以從其任何線程創(chuàng)建其他線程。
一個線程是可以調(diào)度執(zhí)行過程中的實(shí)體。進(jìn)程的所有線程共享其虛擬地址空間和系統(tǒng)資源。此外,每個線程都維護(hù)異常處理程序、調(diào)度優(yōu)先級、線程本地存儲、唯一的線程標(biāo)識符以及系統(tǒng)將用來保存線程上下文直到被調(diào)度的一組結(jié)構(gòu)。的線程上下文包括線程的一組的機(jī)器寄存器,內(nèi)核棧,線程環(huán)境塊,并在該線程的進(jìn)程的地址空間中的用戶棧。線程也可以有自己的安全上下文,可用于模擬客戶端。
Microsoft Windows 支持搶占式多任務(wù)處理,這會產(chǎn)生來自多個進(jìn)程的多個線程同時執(zhí)行的效果。在多處理器計算機(jī)上,系統(tǒng)可以同時執(zhí)行與計算機(jī)上的處理器一樣多的線程。
甲作業(yè)對象允許的處理組作為一個單元來管理。作業(yè)對象是可命名的、可保護(hù)的、可共享的對象,它們控制與其關(guān)聯(lián)的進(jìn)程的屬性。對作業(yè)對象執(zhí)行的操作會影響與作業(yè)對象關(guān)聯(lián)的所有進(jìn)程。
應(yīng)用程序可以使用線程池來減少應(yīng)用程序線程的數(shù)量并提供對工作線程的管理。應(yīng)用程序可以對工作項進(jìn)行排隊,將工作與可等待句柄相關(guān)聯(lián),根據(jù)計時器自動排隊,并與 I/O 綁定。
用戶模式調(diào)度(UMS) 是一種輕量級機(jī)制,應(yīng)用程序可以使用它來調(diào)度自己的線程。應(yīng)用程序可以在用戶模式下在 UMS 線程之間切換,而無需系統(tǒng)調(diào)度程序,如果 UMS 線程在內(nèi)核中阻塞,則可以重新獲得對處理器的控制。每個 UMS 線程都有自己的線程上下文,而不是共享單個線程的線程上下文。在用戶模式下在線程之間切換的能力使 UMS 比需要很少系統(tǒng)調(diào)用的短期工作項目的線程池更有效。
甲纖維是執(zhí)行的單元,其必須由應(yīng)用程序進(jìn)行手動調(diào)度。Fiber 在調(diào)度它們的線程的上下文中運(yùn)行。每個線程可以調(diào)度多個纖程。一般而言,與精心設(shè)計的多線程應(yīng)用程序相比,纖程沒有優(yōu)勢。但是,使用纖程可以更輕松地移植旨在調(diào)度自己線程的應(yīng)用程序。
如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)的Java多線程編程教程,里面有更多的知識可以學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743