欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

動(dòng)態(tài)線程池管理的制作方法

文檔序號(hào):6355946閱讀:248來源:國知局
專利名稱:動(dòng)態(tài)線程池管理的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及線程管理領(lǐng)域,尤其涉及對(duì)線程的動(dòng)態(tài)管理。
背景技術(shù)
服務(wù)器被設(shè)計(jì)成響應(yīng)于來自客戶機(jī)的請(qǐng)求來提供服務(wù)。使服務(wù)器能夠并發(fā)地處理 若干請(qǐng)求的常見方法是使用包括用于執(zhí)行任務(wù)所創(chuàng)建的一些線程的線程池。線程池中的線 程數(shù)量是資源,并且通常,存在許多比線程多得多的任務(wù)。如果線程池中的線程數(shù)量太少, 則存在較少的并發(fā)性,可能降低總體請(qǐng)求處理吞吐量。另一方面,如果線程池中的線程數(shù)量 太大,則線程之間的上下文改變浪費(fèi)更多時(shí)間,并且存在較大機(jī)會(huì)的鎖競爭(例如,具有對(duì) 相同資源的獨(dú)占訪問的線程)。進(jìn)一步的結(jié)果是服務(wù)器吞吐量的減少。當(dāng)應(yīng)用程序利用單個(gè)線程池來服務(wù)若干相關(guān)聯(lián)的子應(yīng)用程序時(shí),當(dāng)僅僅幾個(gè)子應(yīng) 用程序?qū)е绿幚硌舆t時(shí),所有的子應(yīng)用程序可經(jīng)歷該延遲。此外,當(dāng)與子應(yīng)用程序相關(guān)聯(lián)的 線程試圖與經(jīng)歷延遲的子應(yīng)用程序交互時(shí),這些線程可被阻止,直到解決了延遲的子應(yīng)用 程序。應(yīng)用程序性能的下降導(dǎo)致用戶體驗(yàn)降級(jí)。

發(fā)明內(nèi)容
本發(fā)明的各實(shí)施例動(dòng)態(tài)地管理與多個(gè)子應(yīng)用程序相關(guān)聯(lián)的線程池。應(yīng)用程序和多 個(gè)子應(yīng)用程序的配置信息連同對(duì)多個(gè)子應(yīng)用程序中的至少一個(gè)的請(qǐng)求一起被接收。確定當(dāng) 前被分配給子應(yīng)用程序中的至少一個(gè)的線程數(shù)量,并且將其與來自配置信息的子應(yīng)用程序 的預(yù)定義的最大閾值作比較。如果線程數(shù)量不大于預(yù)定義的最大線程閾值,則分配線程池 中的線程來處理請(qǐng)求。然而,如果線程數(shù)量大于預(yù)定義的最大線程閾值,則生成出錯(cuò)消息。提供本概述是為了以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概 念。本概述不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確 定所要求保護(hù)的主題的范圍。


圖1是示出接收和處理來自客戶機(jī)的請(qǐng)求的服務(wù)器的示例性框圖。圖2是具有存儲(chǔ)用于動(dòng)態(tài)地管理線程池的組件的存儲(chǔ)器區(qū)域的服務(wù)器的示例性框圖。圖3A和圖3B是示出用于動(dòng)態(tài)地管理線程池的過程的示例性流程圖。在附圖范圍中,對(duì)應(yīng)的參考符號(hào)表示對(duì)應(yīng)的部分。
具體實(shí)施例方式參考附圖,本發(fā)明的各實(shí)施例提供用于經(jīng)由服務(wù)器106動(dòng)態(tài)地管理服務(wù)應(yīng)用程序 108和多個(gè)子應(yīng)用程序110的線程池208的系統(tǒng)100。在某些實(shí)施例中,常見語言運(yùn)行時(shí)線 程池服務(wù)具有多個(gè)相關(guān)聯(lián)的應(yīng)用程序的網(wǎng)站。本發(fā)明的各實(shí)施例向服務(wù)器106提供動(dòng)態(tài)地改變線程池208中的線程數(shù)量、以及基于當(dāng)前分配給子應(yīng)用程序110的每一個(gè)的線程數(shù)量 來動(dòng)態(tài)地維護(hù)該分配給子應(yīng)用程序110中的每一個(gè)的線程數(shù)量的能力。本發(fā)明的另一些實(shí)施例基于一個(gè)或多個(gè)子應(yīng)用程序110所經(jīng)歷的等待時(shí)間來動(dòng) 態(tài)地控制線程池208中的線程數(shù)量(例如,線程池208中的線程數(shù)量與等待時(shí)間成反比)。 這隔離了潛在子應(yīng)用程序可對(duì)其他子應(yīng)用程序的影響。更具體地,如果子應(yīng)用程序變成潛 在的,則直到潛在子應(yīng)用程序的響應(yīng)時(shí)間小于預(yù)定義的閾值,可分配給潛在子應(yīng)用程序的 線程數(shù)量減小到例如一個(gè)。隨后綁定到潛在子應(yīng)用程序的請(qǐng)求失敗,這還引起出錯(cuò)信息被 發(fā)送回客戶機(jī)102。這一失敗機(jī)制防止線程被分配以服務(wù)潛在子應(yīng)用程序以便包含等待時(shí) 間、并且使得更多線程可用于對(duì)綁定到非潛在的其他子應(yīng)用程序的請(qǐng)求進(jìn)行服務(wù)。等待時(shí) 間可與諸如處理等待時(shí)間、網(wǎng)絡(luò)等待時(shí)間或其他等待時(shí)間等子應(yīng)用程序的任何組件或操作 相關(guān)聯(lián)。再次參考圖1,系統(tǒng)100的示例性框圖包括客戶機(jī)102、網(wǎng)絡(luò)104和服務(wù)器106???戶機(jī)表示諸如移動(dòng)計(jì)算設(shè)備、膝上型計(jì)算機(jī)、上網(wǎng)本計(jì)算機(jī)、游戲控制臺(tái)等之類的任何計(jì)算 設(shè)備。服務(wù)器106被配置成經(jīng)由網(wǎng)絡(luò)104與客戶機(jī)102進(jìn)行通信。服務(wù)器106包括或可以 訪問應(yīng)用程序108和子應(yīng)用程序110。盡管參考作為服務(wù)器計(jì)算設(shè)備的服務(wù)器106示出并且描述了本發(fā)明的一些實(shí)施 方式,但本發(fā)明的各方面可用于執(zhí)行本文示出并且描述的功能的任何設(shè)備或其等價(jià)物,諸 如在對(duì)等系統(tǒng)中。例如,本發(fā)明的實(shí)施例可用于上網(wǎng)本、臺(tái)式計(jì)算設(shè)備、膝上型計(jì)算機(jī)、以及 其他計(jì)算設(shè)備。在這些實(shí)施例中,數(shù)據(jù)可由云服務(wù)來存儲(chǔ)并可由實(shí)現(xiàn)本發(fā)明的功能的任何 計(jì)算設(shè)備來訪問。接著參考圖2,服務(wù)器106具有用于存儲(chǔ)動(dòng)態(tài)地管理線程池208的組件的存儲(chǔ)器區(qū) 域202。服務(wù)器106還包括顯示器204和至少一個(gè)處理器206。顯示器204可以是例如電 容式觸摸屏顯示器,該電容式觸摸屏顯示器被集成到服務(wù)器106中、或外置于服務(wù)器106。 在充當(dāng)用戶輸入選擇設(shè)備的顯示器204中提供用戶輸入功能。顯示器204被配置為響應(yīng)于 顯示器204上的用戶按壓接觸以選擇性地執(zhí)行功能。由此,用戶可以例如通過接觸顯示器 204的表面以及此處提供的其他功能來輸入最大閾值。存儲(chǔ)器區(qū)域202存儲(chǔ)線程池208以及一個(gè)或多個(gè)計(jì)算機(jī)可執(zhí)行組件。示例性組件 包括但不限于接口組件210、線程池組件212、等待時(shí)間組件214、以及閾值組件216。雖然 線程池208和組件210、212、214、216被示為存儲(chǔ)在存儲(chǔ)器區(qū)域202,但線程池208和組件 210、212、214、216可被存儲(chǔ)在遠(yuǎn)離服務(wù)器106的存儲(chǔ)器區(qū)域并且從其中執(zhí)行。例如,線程 池208可被存儲(chǔ)在云服務(wù)、數(shù)據(jù)庫或可由服務(wù)器106訪問的其他存儲(chǔ)器區(qū)域中。這些實(shí)施 例減輕了服務(wù)器106上的計(jì)算和存儲(chǔ)負(fù)擔(dān)。處理器206執(zhí)行用于實(shí)現(xiàn)本發(fā)明的各方面的計(jì)算機(jī)可執(zhí)行指令。在某些實(shí)施方 式中,處理器206通過執(zhí)行計(jì)算機(jī)可執(zhí)行指令或通過以其他方式編程來變換成專用微處理 器。例如,存儲(chǔ)器206可執(zhí)行接口組件210、線程池組件212、等待時(shí)間組件214、以及閾值 組件216。接口組件210當(dāng)被理器206執(zhí)行時(shí)使得處理器206接收應(yīng)用程序108和子應(yīng)用 程序110的配置信息,并且接收來自客戶機(jī)102的對(duì)子應(yīng)用程序110中的至少一個(gè)的請(qǐng)求。 配置信息包括,例如,預(yù)定義的最大線程閾值,并且可任選地包括對(duì)子應(yīng)用程序中的每一個(gè) 的預(yù)定義的最大等待時(shí)間閾值。配置信息可由與應(yīng)用程序108相關(guān)聯(lián)的開發(fā)者、用戶、或另一實(shí)體來設(shè)置。線程池組件212當(dāng)被理器206執(zhí)行時(shí)使得處理器206確定當(dāng)前分配給子應(yīng)用程 序中的至少一個(gè)的線程數(shù)量,確定當(dāng)前分配給子應(yīng)用程序中的至少一個(gè)的線程數(shù)量是否大 于預(yù)定義的最大線程閾值,并且如果當(dāng)前分配給子應(yīng)用程序中的至少一個(gè)的線程數(shù)量不大 于預(yù)定義的最大線程閾值、則分配一線程來處理所接收的請(qǐng)求。等待時(shí)間組件214當(dāng)被處 理器206執(zhí)行時(shí)使得處理器206確定子應(yīng)用程序110中的至少一個(gè)的等待時(shí)間。接口組件 210當(dāng)被處理器206執(zhí)行時(shí)還使得處理器206在所確定的等待時(shí)間大于預(yù)定義的等待時(shí)間 閾值時(shí)向客戶機(jī)102發(fā)送出錯(cuò)消息。例如,出錯(cuò)信息可包括“XXX秒后重試”建議。閾值組 件216當(dāng)被處理器206執(zhí)行時(shí)使得處理器206在所確定的等待時(shí)間大于預(yù)定義的最大等待 時(shí)間閾值時(shí)將預(yù)定義的最大線程閾值減小到例如一,此外,閾值組件216當(dāng)被處理器206執(zhí) 行時(shí)使得處理器206在所確定的等待時(shí)間不大于預(yù)定義的最大等待時(shí)間閾值且當(dāng)前預(yù)定 義的最大線程閾值為1時(shí)增加預(yù)定義的最大線程閾值。一般而言,處理器206可以用指令來編程,諸如此處參考圖2中示出的組件以及圖 3A和圖;3B中示出且接著描述的操作來描述的指令。接著參考圖3A和圖;3B,示例性流程圖示出了用于動(dòng)態(tài)地管理與應(yīng)用程序108和子 應(yīng)用程序110相關(guān)聯(lián)的單個(gè)線程池(例如,線程池208)的過程。應(yīng)用程序108啟動(dòng)之后,在 302,接收應(yīng)用程序108和子應(yīng)用程序110的配置信息。在一個(gè)替換實(shí)施例中,應(yīng)用程序108 和子應(yīng)用程序110的配置信息被存儲(chǔ)在存儲(chǔ)器區(qū)域202中,并且在啟動(dòng)應(yīng)用程序108之后, 可將所存儲(chǔ)的配置信息與所接收的配置信息作比較,并且如果需要?jiǎng)t基于比較來更新所存 儲(chǔ)的配置信息。在一個(gè)實(shí)施例中,配置信息包括與子應(yīng)用程序110中的一個(gè)或多個(gè)相關(guān)聯(lián) 的預(yù)定義的最大線程閾值。子應(yīng)用程序110中的每一個(gè)之間的預(yù)定義的最大線程閾值可以 不同。例如,預(yù)定義的最大線程閾值可以基于子應(yīng)用程序中的每一個(gè)接收的“通信”量,并 且大小可由此隨一個(gè)子應(yīng)用程序到另一個(gè)而變化。由此,具有較低等級(jí)的通信量的子應(yīng)用 程序在與子應(yīng)用程序110中的其他子應(yīng)用程序作比較時(shí),它具有的預(yù)定義最大線程閾值可 以比子應(yīng)用程序110中的其他子應(yīng)用程序低,反之亦然。在又一個(gè)實(shí)施例中,配置信息還可 包括與子應(yīng)用程序110中的一個(gè)或多個(gè)相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值。在304,從客戶機(jī)102接收對(duì)子應(yīng)用程序110中的至少一個(gè)(例如,目標(biāo)子應(yīng)用程序)的請(qǐng)求。在接收請(qǐng)求之后,在306確定當(dāng)前分配給目標(biāo)子應(yīng)用程序的線程數(shù)量。在308, 所確定的線程數(shù)量和與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大線程閾值作比較。與目標(biāo)子 應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大閾值被存儲(chǔ)在所接收/存儲(chǔ)的配置信息中。在310,確定所 確定的分配給目標(biāo)子應(yīng)用程序的線程數(shù)量是否大于預(yù)定義的最大線程閾值。在312,如果所 確定的分配給目標(biāo)子應(yīng)用程序的線程數(shù)量大于與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大 線程閾值,則生成出錯(cuò)信息并且將其發(fā)送給客戶機(jī)102。在314,如果所確定的分配給目標(biāo)子應(yīng)用程序的線程數(shù)量不大于預(yù)定義的最大線 程閾值,則確定目標(biāo)子應(yīng)用程序的等待時(shí)間。在一個(gè)實(shí)施例中,通過在預(yù)定義的時(shí)間段(例 如,一分鐘、五分鐘、十分鐘)內(nèi)計(jì)算目標(biāo)子應(yīng)用程序處理請(qǐng)求的平均響應(yīng)時(shí)間來確定等待 時(shí)間。在又一實(shí)施例中,可以直到目標(biāo)子應(yīng)用程序處理預(yù)定義數(shù)量的請(qǐng)求,才確定等待時(shí) 間。例如,直到目標(biāo)子應(yīng)用程序處理十個(gè)請(qǐng)求、五十個(gè)請(qǐng)求或甚至幾百個(gè)請(qǐng)求,才確定等待 時(shí)間。由此,在此示例中,一旦目標(biāo)子應(yīng)用程序處理預(yù)定義數(shù)量的請(qǐng)求,則確定用于處理預(yù)定義數(shù)量的請(qǐng)求中的每一個(gè)的平均響應(yīng)時(shí)間。在一個(gè)實(shí)施例中,預(yù)定義數(shù)量的請(qǐng)求可被存 儲(chǔ)在所接收/存儲(chǔ)的配置信息中。在316,將目標(biāo)子應(yīng)用程序的等待時(shí)間和與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最 大等待時(shí)間閾值作比較。在318,確定該至少子應(yīng)用程序的所確定的等待時(shí)間是否大于與目 標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值。在320,如果該至少子應(yīng)用程序的所確 定的等待時(shí)間大于與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值,則生成出錯(cuò)信 息并且將其發(fā)送給客戶機(jī)102。在322,如果該至少子應(yīng)用程序的所確定的等待時(shí)間大于與 目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值,則將預(yù)定義的最大線程閾值減小到 大于零但接近于一的值。將最大線程閾值減小到非零值以動(dòng)態(tài)地檢測(cè)潛在子應(yīng)用程序何時(shí) 不再是潛在的。將最大線程閾值設(shè)置得過高防止了線程阻塞。在一個(gè)實(shí)施例中,如果該至 少子應(yīng)用程序的所確定的等待時(shí)間大于與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí) 間閾值,則將預(yù)定義的最大線程閾值減小到一。動(dòng)態(tài)地控制可分配給目標(biāo)子應(yīng)用程序的線 程數(shù)量(例如,減小可分配給一個(gè)線程的線程數(shù)量)隔離了目標(biāo)子應(yīng)用程序可能對(duì)子應(yīng)用 程序110中的其他子應(yīng)用程序的每一個(gè)的影響。因此,從例如客戶機(jī)102接收的且被綁定 到目標(biāo)子應(yīng)用程序的任何請(qǐng)求都失敗了。允許所接收的每一信號(hào)失敗防止了線程被分配給 目標(biāo)子應(yīng)用程序,并且使得更多線程可用于對(duì)綁定到子應(yīng)用程序110中的所有其他子應(yīng)用 程序的請(qǐng)求進(jìn)行服務(wù)。在減小與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大閾值之后,直到經(jīng)過預(yù)定義的時(shí) 間段或目標(biāo)子應(yīng)用程序處理了預(yù)定義數(shù)量的請(qǐng)求,才確定該至少一個(gè)子應(yīng)用程序的等待時(shí) 間。在一個(gè)實(shí)施例中,當(dāng)目標(biāo)子應(yīng)用程序被確定為潛在的時(shí),減小預(yù)定義的時(shí)間段或所處理 的請(qǐng)求的預(yù)定義數(shù)量。由此,在此示例中,當(dāng)目標(biāo)子應(yīng)用程序被確定為潛在的時(shí),預(yù)定義的 時(shí)間段或處理請(qǐng)求的預(yù)定義數(shù)量比當(dāng)目標(biāo)子應(yīng)用程序被確定為非潛在的時(shí)低。一旦已經(jīng)過 預(yù)定義的時(shí)間段或已經(jīng)處理了預(yù)定義數(shù)量的請(qǐng)求,則確定在預(yù)定義的時(shí)間段用于處理請(qǐng)求 的平均響應(yīng)時(shí)間,或確定用于處理預(yù)定義數(shù)量的請(qǐng)求中的每一個(gè)的平均響應(yīng)時(shí)間。確定用 于處理請(qǐng)求的平均響應(yīng)時(shí)間不大于與目標(biāo)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾 值之后,將所減小的預(yù)定義的最大線程閾值增加到例如所減小的預(yù)定義的最大線程閾值之 前的目標(biāo)子應(yīng)用程序的預(yù)定義的最大線程閾值。在324,如果所確定的分配給目標(biāo)子應(yīng)用程序的線程數(shù)量不大于與至少一個(gè)子應(yīng) 用程序相關(guān)聯(lián)的預(yù)定義的最大線程閾值,并且如果所確定的目標(biāo)子應(yīng)用程序的等待時(shí)間不 大于與至少一個(gè)子應(yīng)用程序相關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值,則分配來自線程池208 的線程以處理所接收的請(qǐng)求。在326,在分配線程以處理所接收的請(qǐng)求之后,將分配給目標(biāo) 子應(yīng)用程序的線程數(shù)量加一。在328,處理所接收的請(qǐng)求,并且在330,將滿足所接收的請(qǐng)求 的響應(yīng)發(fā)送給客戶機(jī)102。在322,在將滿足所接收的請(qǐng)求的響應(yīng)發(fā)送給客戶機(jī)之后,將分 配給目標(biāo)子應(yīng)用程序的線程數(shù)量減一。雖然本發(fā)明的某些實(shí)施例構(gòu)想了服務(wù)器106執(zhí)行在圖3A和圖中示出的操作, 但在某些實(shí)施例中客戶機(jī)102可執(zhí)行一個(gè)或多個(gè)操作。示例性操作環(huán)境諸如服務(wù)器106和客戶機(jī)102等此處所描述的計(jì)算機(jī)或計(jì)算設(shè)備具有一個(gè)或多個(gè) 處理器或處理單元、系統(tǒng)存儲(chǔ)器和某種形式的計(jì)算機(jī)可讀介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可 讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性與非易失 性、可移動(dòng)與不可移動(dòng)介質(zhì)。通信介質(zhì)一般以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào) 來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。以 上的任一種的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。計(jì)算機(jī)可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)的邏輯連接在網(wǎng)絡(luò)化環(huán)境 中操作。盡管結(jié)合示例性計(jì)算系統(tǒng)環(huán)境進(jìn)行了描述,但本發(fā)明的各實(shí)施例可用于眾多其它 通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置。計(jì)算系統(tǒng)環(huán)境不旨在對(duì)本發(fā)明的任何方面的使用范圍 或功能提出任何限制。此外,計(jì)算機(jī)環(huán)境也不應(yīng)被解釋成對(duì)于示例性操作環(huán)境中所示出的 任一組件或其組合有任何依賴或要求。適用于本發(fā)明各方面的公知的計(jì)算系統(tǒng)、環(huán)境和/ 或配置的示例包括,但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器 系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、移動(dòng)電話、網(wǎng)絡(luò)PC、小型機(jī)、大型 機(jī)、包括上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等??梢栽谟梢慌_(tái)或多臺(tái)計(jì)算機(jī)或其他設(shè)備執(zhí)行的諸如程序模塊之類的計(jì)算機(jī)可執(zhí) 行的指令的一般上下文中來描述本發(fā)明的各實(shí)施例。計(jì)算機(jī)可執(zhí)行指令可以被組織成一個(gè) 或多個(gè)計(jì)算機(jī)可執(zhí)行組件或模塊。一般而言,程序模塊包括,但不限于,執(zhí)行特定任務(wù)或?qū)?現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件,以及數(shù)據(jù)結(jié)構(gòu)。可以利用任何數(shù)量的這樣的 組件或模塊及其組織來實(shí)現(xiàn)本發(fā)明的各方面。例如,本發(fā)明的各方面不僅限于附圖中所示 出并且在此處所描述的特定計(jì)算機(jī)可執(zhí)行指令或特定組件或模塊。本發(fā)明的其他實(shí)施例可 以包括具有比此處所示出和描述的功能更多或更少功能的不同的計(jì)算機(jī)可執(zhí)行指令或組 件。本發(fā)明的各方面也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式 計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本 地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。本發(fā)明的各方面當(dāng)被配置成執(zhí)行此處所描述的指令時(shí)將通用計(jì)算機(jī)變換成專用 計(jì)算設(shè)備。本文所示出且描述的實(shí)施例以及本文未具體地描述但在本發(fā)明的各方面的范圍 內(nèi)的實(shí)施例構(gòu)成了用于基于線程計(jì)數(shù)和等待時(shí)間來動(dòng)態(tài)地維護(hù)一個(gè)線程池中的多個(gè)子應(yīng) 用程序的多個(gè)線程的示例性裝置,以及用于動(dòng)態(tài)地維護(hù)分配給多個(gè)子應(yīng)用程序中的每一個(gè) 的線程數(shù)量的示例性裝置。此處所示出和描述的本發(fā)明的各實(shí)施例中的操作的執(zhí)行或?qū)崿F(xiàn)的順序不是必需 的,除非另外指定。即,除非另外指定,否則操作可以按任何順序執(zhí)行,且本發(fā)明的各實(shí)施例 可以包括比此處所公開的操作更多或更少的操作。例如,構(gòu)想了在一個(gè)操作之前、同時(shí)或之 后執(zhí)行另一個(gè)操作是在本發(fā)明的各方面的范圍之內(nèi)的。當(dāng)介紹本發(fā)明的各方面的元素或其實(shí)施例時(shí),冠詞“一”、“一個(gè)”、“該”、“所述”旨
在表示有元素中的一個(gè)或多個(gè)。術(shù)語“包括”、“包含”以及“具有”旨在是包含性的,并意味 著除所列出的元素以外還可以有額外的元素。已經(jīng)詳細(xì)地描述了本發(fā)明的各方面,顯然,在不偏離所附權(quán)利要求書所定義的本 發(fā)明的各方面的范圍的情況下,可以進(jìn)行各種修改和變化。在不偏離本發(fā)明的各方面的范 圍的情況下,可以對(duì)上面的構(gòu)造、產(chǎn)品以及方法作出各種更改,上面的描述中所包含的和各個(gè)附圖中所示出的所有主題應(yīng)該解釋為說明性的,而不是限制性的。
權(quán)利要求
1.一種用于動(dòng)態(tài)地管理與多個(gè)子應(yīng)用程序(Iio)相關(guān)聯(lián)的線程池O08)的系統(tǒng),所述 系統(tǒng)包括用于存儲(chǔ)應(yīng)用程序(108)以及與其相關(guān)聯(lián)的多個(gè)子應(yīng)用程序(110)的配置信息的存儲(chǔ) 器區(qū)域002),所述配置信息包括與所述多個(gè)子應(yīng)用程序(110)的一個(gè)或多個(gè)相關(guān)聯(lián)的預(yù) 定義的最大線程閾值,所述配置信息還包括與所述多個(gè)子應(yīng)用程序(110)的一個(gè)或多個(gè)相 關(guān)聯(lián)的預(yù)定義的最大等待時(shí)間閾值,所述多個(gè)子應(yīng)用程序(110)與一個(gè)線程池(208)相關(guān) 聯(lián);以及處理器006),所述處理器被編程為接收所述應(yīng)用程序(108)和所述多個(gè)子應(yīng)用程序(110)的配置信息; 接收對(duì)所述子應(yīng)用程序(110)中的至少一個(gè)的請(qǐng)求; 確定當(dāng)前分配給所述子應(yīng)用程序(110)中的至少一個(gè)的線程數(shù)量; 將所確定的線程數(shù)量與存儲(chǔ)在所述存儲(chǔ)器區(qū)域O02)中的預(yù)定義的最大線程閾值作 比較以生成第一比較結(jié)果;確定所述子應(yīng)用程序(110)中的至少一個(gè)的等待時(shí)間;將所確定的等待時(shí)間與存儲(chǔ)在所述存儲(chǔ)器區(qū)域O02)中的所述預(yù)定義的最大等待時(shí) 間閾值作比較以生成第二比較結(jié)果;基于所述第一比較結(jié)果和所述第二比較結(jié)果來分配所述一個(gè)線程池O08)中的線程 以處理所接收的請(qǐng)求。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述處理器被編程為接收來自客戶機(jī)的請(qǐng) 求,并且所述處理器還被編程為如果所確定的線程數(shù)量大于所述預(yù)定義的最大線程閾值, 則將出錯(cuò)消息發(fā)送給所述客戶機(jī)。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述處理器還被編程為在預(yù)定義的時(shí)間段 內(nèi)計(jì)算所述子應(yīng)用程序中的至少一個(gè)的平均響應(yīng)時(shí)間以處理請(qǐng)求。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括用于基于線程計(jì)數(shù)和等待時(shí)間來動(dòng) 態(tài)地維護(hù)所述一個(gè)線程池中多個(gè)子應(yīng)用程序的多個(gè)線程的裝置。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括動(dòng)態(tài)地維護(hù)分配給所述多個(gè)子應(yīng)用 程序中的每一個(gè)的線程數(shù)量的裝置。
6.一種方法,包括接收應(yīng)用程序(108)以及多個(gè)子應(yīng)用程序(110)的配置信息,所述子應(yīng)用程序(110) 與一個(gè)線程池(208)相關(guān)聯(lián);接收對(duì)所述子應(yīng)用程序(110)中的至少一個(gè)的請(qǐng)求; 確定當(dāng)前分配給所述子應(yīng)用程序(110)中的至少一個(gè)的線程數(shù)量; 將所確定的線數(shù)量與來自所接收的配置信息的預(yù)定義的最大線程閾值作比較; 如果所確定的線程數(shù)據(jù)不大于所述預(yù)定義的最大線程閾值,則分配所述一個(gè)線程池 (208)中的線程以處理所接收的請(qǐng)求;以及如果所確定的線程數(shù)量大于所述預(yù)定義的最大線程閾值,則生成出錯(cuò)消息。
7.如權(quán)利要求6所述的方法,其特征在于,還包括在分配線程以處理所接收的請(qǐng)求之 后,增加分配給所述子應(yīng)用程序的至少一個(gè)的線程數(shù)量。
8.如權(quán)利要求6所述的方法,其特征在于,所述配置信息還包括預(yù)定義的最大等待時(shí)間閾值,并且還包括確定所述子應(yīng)用程序中的至少一個(gè)的等待時(shí)間;以及將所確定的所述子應(yīng)用程序中的至少一個(gè)的等待時(shí)間與所述預(yù)定義的最大等待時(shí)間 閾值作比較。
9.如權(quán)利要求8所述的方法,其特征在于,接收所述請(qǐng)求包括接收來自客戶機(jī)的所述 請(qǐng)求,并且還包括如果所確定的等待時(shí)間大于所述預(yù)定義的最大等待時(shí)間閾值,則將出錯(cuò) 消息發(fā)送給所述客戶機(jī)。
10.如權(quán)利要求8所述的方法,其特征在于,還包括如果所確定的等待時(shí)間大于所述預(yù) 定義的最大等待時(shí)間閾值,則減小所述預(yù)定義的最大線程閾值。
11.如權(quán)利要求8所述的方法,其特征在于,還包括如果所確定的等待時(shí)間大于所述預(yù) 定義的最大等待時(shí)間閾值,則將所述預(yù)定義的最大線程閾值減小到數(shù)量一。
12.如權(quán)利要求6所述的方法,其特征在于,接收所述請(qǐng)求包括接收來自客戶機(jī)的所述 請(qǐng)求,分配的線程處理所接收的請(qǐng)求,并且還包括將指示滿足所接收的請(qǐng)求的響應(yīng)發(fā)送給所述客戶機(jī);以及在將所述響應(yīng)發(fā)送給所述客戶機(jī)之后,將分配給所述子應(yīng)用程序中的至少一個(gè)的線程數(shù)量減一。
13.如權(quán)利要求6所述的方法,其特征在于,確定所述子應(yīng)用程序中的至少一個(gè)的等待 時(shí)間包括在預(yù)定義的時(shí)間段內(nèi)計(jì)算所述多個(gè)子應(yīng)用程序中的至少一個(gè)的平均響應(yīng)時(shí)間用 于處理請(qǐng)求。
14.如權(quán)利要求6所述的方法,其特征在于,確定所述子應(yīng)用程序中的至少一個(gè)的等待 時(shí)間包括計(jì)算所述子應(yīng)用程序中的至少一個(gè)的平均響應(yīng)時(shí)間用于處理預(yù)定義數(shù)量的請(qǐng)求。
15.如權(quán)利要求1所述的方法,其特征在于,一種或多種計(jì)算機(jī)可讀介質(zhì)具有計(jì)算機(jī)可 執(zhí)行組件,所述組件包括接口組件,所述接口組件當(dāng)被至少一個(gè)處理器執(zhí)行時(shí)使得所述至少一個(gè)處理器接收 應(yīng)用程序和多個(gè)子應(yīng)用程序的配置信息,并且還接收對(duì)所述子應(yīng)用程序中的至少一個(gè)的請(qǐng) 求。線程池組件,所述線程池組件當(dāng)被至少一個(gè)處理器執(zhí)行時(shí)使得所述至少一個(gè)處理器基 于當(dāng)前分配給所述子應(yīng)用程序的至少一個(gè)的線程數(shù)量與預(yù)定義的最大線程閾值的比較,來 分配線程用于處理由所述接口組件接收的請(qǐng)求。等待時(shí)間組件,所述等待時(shí)間組件當(dāng)被至少一個(gè)處理器執(zhí)行時(shí)使得所述至少一個(gè)處理 器確定所述子應(yīng)用程序中的至少一個(gè)的等待時(shí)間;以及閾值組件,所述閾值組件當(dāng)被至少一個(gè)處理執(zhí)行時(shí)使得所述至少一個(gè)處理器基于由所 述等待時(shí)間組件所確定的等待時(shí)間來改變所述預(yù)定義的最大線程閾值。
全文摘要
動(dòng)態(tài)地管理與多個(gè)子應(yīng)用程序相關(guān)聯(lián)的線程池。接收對(duì)子應(yīng)用程序中的至少一個(gè)的請(qǐng)求。確定當(dāng)前分配給子應(yīng)用程序中的至少一個(gè)的線程數(shù)量。將所確定的線程數(shù)量與預(yù)定義的最大線程閾值作比較。如果所確定的線程數(shù)據(jù)不大于預(yù)定義的最大線程閾值,則分配線程池中的線程以處理所接收的請(qǐng)求。各實(shí)施例使得能夠控制線程池中分配給子應(yīng)用程序中的每一個(gè)的線程數(shù)量。另一些實(shí)施例基于子應(yīng)用程序的等待時(shí)間來管理子應(yīng)用程序的線程。
文檔編號(hào)G06F9/46GK102147746SQ20111006057
公開日2011年8月10日 申請(qǐng)日期2011年3月4日 優(yōu)先權(quán)日2010年3月5日
發(fā)明者R·T·高達(dá) 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
沭阳县| 广灵县| 大安市| 侯马市| 淮阳县| 宁武县| 深泽县| 剑河县| 吴旗县| 高阳县| 丹巴县| 镇巴县| 黄平县| 长子县| 广德县| 五大连池市| 瑞安市| 龙门县| 临海市| 惠东县| 玉林市| 丹巴县| 竹山县| 孝感市| 广饶县| 蕉岭县| 合川市| 荣昌县| 怀仁县| 澳门| 十堰市| 台南市| 承德市| 和硕县| 武邑县| 中宁县| 五大连池市| 合肥市| 彩票| 平昌县| 松溪县|