两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

線程調(diào)度方法、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)與流程

文檔序號(hào):40624861發(fā)布日期:2025-01-10 18:30閱讀:1來(lái)源:國(guó)知局
線程調(diào)度方法、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)與流程

本技術(shù)實(shí)施例涉及終端,尤其涉及一種線程調(diào)度方法、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。


背景技術(shù):

1、電子設(shè)備內(nèi)運(yùn)行有多個(gè)線程,線程之間可能會(huì)因?yàn)榈却€程鎖等原因被阻塞。任一線程在等待獲取線程鎖時(shí),會(huì)先進(jìn)入對(duì)應(yīng)線程鎖的等待隊(duì)列,線程鎖的當(dāng)前持鎖線程在釋放線程鎖時(shí),會(huì)在線程鎖的等待隊(duì)列中查詢(xún)等待持鎖的一個(gè)或者多個(gè)線程,并按照等待線程鎖的先后順序喚醒等待隊(duì)列中的一個(gè)或者多個(gè)線程來(lái)持有線程鎖。

2、現(xiàn)有的線程調(diào)度方案僅能基于線程鎖的等待隊(duì)列,按照申請(qǐng)線程鎖的先后順序進(jìn)行依次調(diào)度,無(wú)法有效解決線程長(zhǎng)時(shí)間阻塞的技術(shù)問(wèn)題,影響應(yīng)用整體進(jìn)程。


技術(shù)實(shí)現(xiàn)思路

1、本技術(shù)實(shí)施例提供一種線程調(diào)度方法、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于解決線程長(zhǎng)時(shí)間阻塞的技術(shù)問(wèn)題。

2、為達(dá)到上述目的,本技術(shù)的實(shí)施例采用如下技術(shù)方案:

3、第一方面,提供了一種線程調(diào)度方法,應(yīng)用于電子設(shè)備,電子設(shè)備可以為手機(jī)、平板等設(shè)備。電子設(shè)備包括操作系統(tǒng),操作系統(tǒng)運(yùn)行在電子設(shè)備的處理器上,操作系統(tǒng)可以創(chuàng)建線程,并調(diào)度線程。本技術(shù)提供的線程調(diào)度方法,操作系統(tǒng)根據(jù)線程間阻塞關(guān)系,對(duì)部分線程進(jìn)行優(yōu)先調(diào)度,以盡可能避免因?yàn)榈却€程鎖等原因造成的長(zhǎng)時(shí)間阻塞,優(yōu)化應(yīng)用整體進(jìn)程。本實(shí)施例提供的線程調(diào)度方法,主要步驟可以由操作系統(tǒng)來(lái)執(zhí)行,部分步驟也可以由操作系統(tǒng)所創(chuàng)建的線程來(lái)執(zhí)行。

4、操作系統(tǒng)創(chuàng)建的多個(gè)線程中存在第一線程,第一線程等待持有第一線程鎖,第一線程位于第一線程鎖的等待隊(duì)列中。第一線程鎖當(dāng)前持鎖線程為第二線程,且第一線程鎖的等待隊(duì)列中可能還存在其他線程。在第一線程鎖的等待隊(duì)列中,其他線程中的部分線程可能位于第一線程之前即阻塞第一線程。第一線程可能會(huì)因?yàn)閮?yōu)先級(jí)較高或者其他原因需要盡快被調(diào)度,若第一線程長(zhǎng)時(shí)間被阻塞對(duì)應(yīng)用整體進(jìn)程的影響較大,即第一線程為需要優(yōu)先持鎖的線程。

5、操作系統(tǒng)可以在第一線程鎖的等待隊(duì)列中,查找被其他線程阻塞且需要優(yōu)先持鎖的第一線程。例如,操作系統(tǒng)可以基于線程優(yōu)先級(jí)等因素和預(yù)先定義的優(yōu)先持鎖判斷規(guī)則,來(lái)查找被其他線程阻塞且需要優(yōu)先持鎖的第一線程。然后,操作系統(tǒng)可以為第一線程添加第一標(biāo)記,第一標(biāo)記指示第一線程為需要優(yōu)先持鎖的線程。

6、這樣,在第二線程釋放第一線程鎖時(shí),添加有第一標(biāo)記的第一線程就可以?xún)?yōu)先獲取第一線程鎖。這里所說(shuō)的第一線程優(yōu)先獲取第一線程鎖,是相對(duì)于第一線程鎖內(nèi)位于第一線程之前的其他線程獲取第一線程的時(shí)間。

7、操作系統(tǒng)查找線程間阻塞關(guān)系的方案可以有多種。例如,操作系統(tǒng)可以根據(jù)各線程鎖的等待隊(duì)列或者線程鎖申請(qǐng)記錄,來(lái)查詢(xún)線程間阻塞關(guān)系。再例如,操作系統(tǒng)還可以另外創(chuàng)建一個(gè)數(shù)據(jù)集,通過(guò)數(shù)據(jù)集來(lái)記錄不同時(shí)刻的線程間阻塞關(guān)系,通過(guò)查詢(xún)?cè)摂?shù)據(jù)集中的元素值可以查找對(duì)應(yīng)的線程間阻塞關(guān)系,所使用的數(shù)據(jù)集可以為表格或者位圖等數(shù)據(jù)結(jié)構(gòu)。

8、本技術(shù)提供的線程調(diào)度方法,針對(duì)電子設(shè)備內(nèi)的全部線程中的部分需要優(yōu)先持鎖的第一線程,操作系統(tǒng)可以查找出這部分需要優(yōu)先持鎖的第一線程并添加第一標(biāo)記,這樣可以使得添加有第一標(biāo)記的第一線程優(yōu)先持鎖,以盡快避免較長(zhǎng)時(shí)間的阻塞對(duì)應(yīng)用整體進(jìn)程的影響,優(yōu)化了線程調(diào)度方案。

9、在第一方面的一種可能實(shí)施方式中,操作系統(tǒng)查找被其他線程阻塞且需要優(yōu)先持鎖的第一線程;操作系統(tǒng)可能會(huì)查找到第一線程,這種情況下,操作系統(tǒng)可以為第一線程添加第一標(biāo)記。當(dāng)然,操作也可能不會(huì)查找到第一線程。若未查找到需要優(yōu)先持鎖的第一線程,操作系統(tǒng)則可以查找等待時(shí)長(zhǎng)最長(zhǎng)的線程來(lái)優(yōu)先持鎖。這樣,操作系統(tǒng)既可以使得需要優(yōu)先持鎖的第一線程優(yōu)先持鎖,又能使得等待時(shí)長(zhǎng)較長(zhǎng)的線程也能優(yōu)先持鎖。

10、操作系統(tǒng)在第一線程鎖的等待隊(duì)列的全部線程中,查找等待時(shí)長(zhǎng)最長(zhǎng)的第三線程。若第一線程鎖的等待隊(duì)列為先進(jìn)先出隊(duì)列,操作系統(tǒng)可以按照第一線程鎖的等待隊(duì)列中各線程的排序,將排序最靠前的線程作為第三線程。操作系統(tǒng)也可以根據(jù)各線程申請(qǐng)第一線程鎖的時(shí)刻,來(lái)查找申請(qǐng)時(shí)刻最早也就是等待時(shí)長(zhǎng)最長(zhǎng)的第三線程。

11、操作系統(tǒng)在第一線程鎖的等待隊(duì)列的全部線程中,查找等待時(shí)長(zhǎng)最長(zhǎng)的第三線程,為第三線程添加第二標(biāo)記,第二標(biāo)記指示第三線程為等待時(shí)長(zhǎng)最長(zhǎng)的線程。這樣,在第一線程鎖的當(dāng)前持鎖的第二線程釋放第一線程鎖時(shí),添加有第二標(biāo)記的第三線程即可以獲取第一線程鎖。

12、本實(shí)施方式提供的線程調(diào)度方法,操作系統(tǒng)在進(jìn)行線程調(diào)度時(shí),若不存在需要優(yōu)先持鎖的線程,操作系統(tǒng)就優(yōu)先調(diào)度等待線程鎖的時(shí)長(zhǎng)最長(zhǎng)的線程,避免部分線程等待獲取線程鎖的時(shí)長(zhǎng)過(guò)長(zhǎng),以?xún)?yōu)化應(yīng)用整體進(jìn)程。

13、在第一方面的一種可能實(shí)施方式中,對(duì)操作系統(tǒng)添加第一標(biāo)記來(lái)指示需要優(yōu)先持鎖的第一線程作了進(jìn)一步限定。具體的,操作系統(tǒng)設(shè)置一個(gè)優(yōu)先持鎖指針,優(yōu)先持鎖指針指向需要優(yōu)先持鎖的線程,用于實(shí)現(xiàn)對(duì)需要優(yōu)先持鎖的線程進(jìn)行標(biāo)記。

14、操作系統(tǒng)在第一線程鎖的等待隊(duì)列中,將優(yōu)先持鎖指針指向第一線程。在第一線程鎖的當(dāng)前持鎖線程即第二線程釋放第一線程鎖時(shí),第二線程喚醒優(yōu)先持鎖指針指向的第一線程,以使第一線程獲取第一線程鎖。

15、在第一方面的一種可能實(shí)施方式中,所提供的線程調(diào)度方法還包括自動(dòng)喚醒線程的方案。需要持鎖的線程運(yùn)行起來(lái)需要兩個(gè)條件,一個(gè)是持有對(duì)應(yīng)的線程鎖,再一個(gè)是被操作系統(tǒng)調(diào)度。部分優(yōu)先級(jí)較低的線程,即使獲取對(duì)應(yīng)的線程鎖,因?yàn)閮?yōu)先級(jí)較低而無(wú)法獲取計(jì)算資源,也就被不能被操作系統(tǒng)調(diào)度,即使持鎖也會(huì)處于休眠狀態(tài)無(wú)法運(yùn)行。部分優(yōu)先級(jí)較高的線程,能夠獲取計(jì)算資源,但需要等待獲取線程鎖而無(wú)法運(yùn)行。本實(shí)施方式提供的線程調(diào)度方案,為優(yōu)先級(jí)較高的等待獲取線程鎖的線程匹配自動(dòng)喚醒的功能,這部分線程能夠喚醒持鎖但處于休眠狀態(tài)的線程,使得持鎖但處于休眠狀態(tài)的線程被優(yōu)先調(diào)度。

16、具體的,操作系統(tǒng)創(chuàng)建的第四線程,若第四線程的優(yōu)先級(jí)較高,或者有其他屬性參數(shù)匹配,操作系統(tǒng)就可以為第四線程配置自動(dòng)喚醒功能。這樣,第四線程申請(qǐng)若第二線程鎖,進(jìn)入第二線程鎖的等待隊(duì)列,操作系統(tǒng)為第四線程匹配的自動(dòng)喚醒功能,就可以使得第四線程在進(jìn)入第二線程鎖的等待隊(duì)列之后在多個(gè)自動(dòng)喚醒時(shí)刻自動(dòng)喚醒。

17、在一種具體實(shí)施方式中,操作系統(tǒng)為線程配置自動(dòng)喚醒功能的具體實(shí)現(xiàn)方式可以為定時(shí)器。例如,若第四線程為主線程,操作系統(tǒng)可以為第四線程配置對(duì)應(yīng)自動(dòng)喚醒功能的定時(shí)器。定時(shí)器在每個(gè)自動(dòng)喚醒時(shí)刻向第四線程發(fā)送定時(shí)喚醒消息,定時(shí)喚醒消息用于在每個(gè)自動(dòng)喚醒時(shí)刻喚醒第四線程。

18、在每個(gè)自動(dòng)喚醒時(shí)刻,第四線程自我喚醒,并喚醒當(dāng)前持鎖但未運(yùn)行的第五線程。第五線程是指當(dāng)前持有第二線程鎖,且直接或者間接阻塞等待第二線程鎖第四線程的線程。第四線程查找到當(dāng)前持有第二線程鎖的第五線程后,若第五線程未被調(diào)度,第四線程為第五線程添加第三標(biāo)記,以使得操作系統(tǒng)優(yōu)先調(diào)度添加有第三標(biāo)記的第五線程。這樣,第四線程喚醒當(dāng)前持有第二線程鎖的第五線程,使得第五線程被優(yōu)先調(diào)度,等待獲取第二線程鎖的第四線程也能相對(duì)較早地獲取第二線程鎖。

19、在第一方面的一種可能實(shí)施方式中,進(jìn)一步限定了第四線程在不同喚醒時(shí)刻查找第五線程的方案。操作系統(tǒng)為第四線程匹配的自動(dòng)喚醒功能對(duì)應(yīng)的定時(shí)器,對(duì)應(yīng)多個(gè)自動(dòng)喚醒時(shí)刻,相鄰的自動(dòng)喚醒時(shí)刻之間存在一定時(shí)長(zhǎng)間隔,相鄰的自動(dòng)喚醒時(shí)刻之間的時(shí)長(zhǎng)間隔可以為固定時(shí)長(zhǎng)。為便于描述,定義為第一個(gè)自動(dòng)喚醒時(shí)刻和第二個(gè)自動(dòng)喚醒時(shí)刻。在實(shí)際方案中,第四線程從申請(qǐng)第二線程鎖進(jìn)入第二線程鎖的等待隊(duì)列,到第四線程獲取第二線程鎖的時(shí)段內(nèi),定時(shí)器可以每間隔固定時(shí)長(zhǎng)確定一個(gè)自動(dòng)喚醒時(shí)刻,自動(dòng)喚醒時(shí)刻的數(shù)量可以有多個(gè)。

20、在第一個(gè)自動(dòng)喚醒時(shí)刻,第四線程查找第二線程鎖在第一個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,作為對(duì)應(yīng)第一自動(dòng)喚醒時(shí)刻的第五線程。在第二個(gè)自動(dòng)喚醒時(shí)刻,第四線程查找第二線程鎖在第二個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,作為對(duì)應(yīng)第二自動(dòng)喚醒時(shí)刻的第五線程。其中,對(duì)應(yīng)第一個(gè)自動(dòng)喚醒時(shí)刻的第五線程,與對(duì)應(yīng)第二個(gè)自動(dòng)喚醒時(shí)刻的第五線程,為相同線程或者不同線程。

21、也就是說(shuō),第四線程在每一個(gè)自動(dòng)喚醒時(shí)刻,都會(huì)自我喚醒,并查找當(dāng)前持有第二線程鎖的線程,若當(dāng)前持有第二線程鎖的線程未被調(diào)度,第四線程就會(huì)喚醒當(dāng)前持有第二線程鎖且未被調(diào)度的線程,以使其能夠被優(yōu)先調(diào)度。

22、若在第一個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,在第二個(gè)自動(dòng)喚醒時(shí)刻仍處于持鎖但未被調(diào)度的狀態(tài),則第四線程在第二個(gè)自動(dòng)喚醒時(shí)刻喚醒的持鎖線程,仍為在第一個(gè)自動(dòng)喚醒時(shí)刻喚醒的同一個(gè)線程。

23、若在第一個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,在第二個(gè)自動(dòng)喚醒時(shí)刻之前已經(jīng)被調(diào)度或者已經(jīng)釋放第二線程鎖,那么,第四線程在第二個(gè)自動(dòng)喚醒時(shí)刻喚醒的持鎖線程,不同于在第一個(gè)自動(dòng)喚醒時(shí)刻喚醒得到持鎖線程。

24、在第一方面的一種可能實(shí)施方式中,對(duì)第四線程查找第五線程的實(shí)現(xiàn)方案做了限定。具體的,第四線程先查找直接阻塞第四線程的第六線程,第六線程可能獲取了第二線程鎖,也可能也被其他線程阻塞即還沒(méi)獲取第二線程鎖。

25、在一種情況下,若直接阻塞第四線程的第六線程獲取第二線程鎖,第四線程就可以將第六線程作為第五線程,再根據(jù)第五線程的調(diào)度狀態(tài)確定是否需要喚醒第五線程。

26、在另一種情況下,若直接阻塞第四線程的第六線程未獲取第二線程鎖,第四線程需要繼續(xù)查找直接阻塞第六線程的第七線程,再根據(jù)第七線程的持鎖狀態(tài)進(jìn)行處理。若第七線程獲取第二線程鎖,將第七線程作為第五線程,第四線程根據(jù)該第五線程或者說(shuō)第七線程的調(diào)度狀態(tài)確定是否需要喚醒該第五線程或者第七線程。若第七線程也未獲取第二線程鎖,第四線程需要再進(jìn)一步查找直接阻塞第七線程的其他線程,也就是說(shuō)按照線程間阻塞關(guān)系依次遞歸查找,直至查找到間接阻塞第四線程且持有第二線程鎖的線程作為第五線程。

27、本實(shí)施方式查找直接阻塞或者間接阻塞第四線程,且持有第二線程鎖的線程,可以有效喚醒當(dāng)前持鎖的線程被優(yōu)先調(diào)度,以加快整體應(yīng)用進(jìn)程。

28、在第一方面的一種可能實(shí)施方式中,限定了通過(guò)位圖記錄線程間阻塞關(guān)系的方案。電子設(shè)備存儲(chǔ)有位圖;其中,位圖記錄電子設(shè)備內(nèi)的全部線程間的阻塞關(guān)系。位圖包括行列矩陣,行列矩陣內(nèi)第m行第n列的元素值指示線程m與線程n之間的阻塞關(guān)系,m和n均為線程編號(hào)。元素值為第一數(shù)值指示線程間不阻塞,元素值為第二數(shù)值指示線程間阻塞。在第一方面的一種可能實(shí)施方式中,第一數(shù)值為0,第二數(shù)值為1。

29、例如,若第1行第2列的元素值為0,則指示線程1不被線程2阻塞,若第1行第2列的元素值為1,則指示線程1被線程2阻塞。再例如,若第2行第1列的元素值為0,則指示線程2不被線程1阻塞,若第2行第1列的元素值為1,則指示線程2被線程1阻塞。

30、具體的,電子設(shè)備所提供的線程調(diào)度方法通過(guò)位圖查詢(xún)線程間阻塞關(guān)系的方案可以具體包括:操作系統(tǒng)查詢(xún)位圖中第一線程對(duì)應(yīng)的第一目標(biāo)行中的元素值,以獲得電子設(shè)備內(nèi)的線程間的阻塞關(guān)系。第一目標(biāo)行中有多個(gè)列元素值,不同列元素值指示對(duì)應(yīng)編號(hào)的線程阻塞第一線程的情況。需要說(shuō)明的是,這里的第一線程并不限定為線程1,第一目標(biāo)行也并不限定為位圖中的第1行,后續(xù)的第二線程等也并不限定為線程2,第二目標(biāo)列也并不限定為位圖中的第2列,后續(xù)的相關(guān)描述同理。

31、在第一方面的一種可能實(shí)施方式中,對(duì)記錄線程間阻塞關(guān)系的位圖的具體獲取方案做了進(jìn)一步限定。電子設(shè)備的操作系統(tǒng)創(chuàng)建位圖,由線程間阻塞關(guān)系發(fā)生變化的線程來(lái)主動(dòng)修改位圖中的元素值,以實(shí)時(shí)更新線程間阻塞關(guān)系。其他的線程都可以查找位圖中各行列的元素值,以查詢(xún)實(shí)時(shí)的線程間阻塞關(guān)系,包括自身的線程間阻塞關(guān)系和其他線程關(guān)聯(lián)的線程間阻塞關(guān)系。

32、為便于描述,后續(xù)將以第八線程的角度,解釋線程根據(jù)自身關(guān)聯(lián)的線程間阻塞關(guān)系發(fā)生變化時(shí),如何修改位圖中的元素值,尤其是申請(qǐng)線程鎖、獲取線程鎖和釋放線程鎖這三個(gè)主要節(jié)點(diǎn)涉及到線程間阻塞關(guān)系發(fā)生變化時(shí)的實(shí)現(xiàn)方案。第八線程可以為操作系統(tǒng)創(chuàng)建的任一線程。

33、具體的,本實(shí)施方式所提供的線程調(diào)度方法中涉及位圖創(chuàng)建和修改的方案可以包括:操作系統(tǒng)創(chuàng)建位圖,并將位圖中的元素值設(shè)為第一數(shù)值。第八線程根據(jù)線程間阻塞關(guān)系的變化,修改位圖中的元素值。

34、操作系統(tǒng)可以在生成第一個(gè)線程時(shí)就創(chuàng)建位圖,位圖的行數(shù)和列數(shù)可以等同于操作系統(tǒng)可以創(chuàng)建的最大線程數(shù)。操作系統(tǒng)創(chuàng)建位圖時(shí),還不存在線程間阻塞的情況,操作系統(tǒng)可以先將位圖中的全部元素值設(shè)為第一數(shù)值,第一數(shù)值指示線程間不阻塞。

35、第八線程在申請(qǐng)線程鎖時(shí),新增線程間阻塞關(guān)系。第八線程在釋放線程鎖時(shí),減少線程間阻塞關(guān)系。通過(guò)位圖記錄線程間阻塞關(guān)系的方案,記錄方式較為簡(jiǎn)便快捷且方便查找,不需要在任務(wù)結(jié)構(gòu)中添加額外成員,適用于多類(lèi)線程鎖,無(wú)需周期性判斷阻塞狀態(tài)。操作系統(tǒng)可以對(duì)阻塞線程進(jìn)行有效識(shí)別,快速調(diào)度,減少應(yīng)用卡頓的時(shí)間。

36、在第一方面的一種可能實(shí)施方式中,限定了申請(qǐng)線程鎖所涉及的修改位圖中元素值的方案。第八線程根據(jù)線程間阻塞關(guān)系的變化,修改位圖中的元素值的步驟可以具體包括:第八線程在第一時(shí)刻申請(qǐng)第三線程鎖時(shí),查找阻塞第八線程的第九線程;第八線程將位圖中第八線程對(duì)應(yīng)的第一目標(biāo)行中,各第九線程對(duì)應(yīng)的第二目標(biāo)列的元素值修改為第二數(shù)值。

37、第八線程在第一時(shí)刻申請(qǐng)第三線程鎖,第三線程鎖當(dāng)前被其他線程持有,且第三線程鎖的等待隊(duì)列中還存在在先申請(qǐng)獲取第三線程鎖的其他線程,第三線程鎖的持鎖線程和第三線程鎖的等待隊(duì)列的全部線程均阻塞第八線程獲取第三線程鎖,記為第九線程。

38、第八線程在申請(qǐng)第三線程鎖時(shí),查找阻塞第八線程的全部第九線程。為記錄新增的第九線程阻塞第八線程的關(guān)系,第八線程將位圖中第八線程對(duì)應(yīng)的第一目標(biāo)行中,各第九線程對(duì)應(yīng)的第二目標(biāo)列的元素值修改為第二數(shù)值。這樣,第八線程或者其他線程查詢(xún)第一目標(biāo)行中全部列的元素值,就可以獲取阻塞第八線程的線程有哪些,確定第八線程關(guān)聯(lián)的線程間阻塞關(guān)系。

39、在第一方面的一種可能實(shí)施方式中,限定了獲取線程鎖所涉及的修改位圖中元素值的方案。第八線程將位圖中第八線程對(duì)應(yīng)的第一目標(biāo)行中,各第九線程對(duì)應(yīng)的第二目標(biāo)列的元素值修改為第二數(shù)值的步驟之后,第八線程在第二時(shí)刻獲取第三線程鎖時(shí),之前持有第三線程鎖和在先申請(qǐng)第三線程鎖的第九線程不再繼續(xù)阻塞第八線程。第八線程將位圖中的第一目標(biāo)行中,各第二目標(biāo)列的元素值修改為第一數(shù)值,以指示在先阻塞第八線程的第九線程不再繼續(xù)阻塞第八線程。

40、此外,第八線程獲取第三線程鎖,會(huì)阻塞當(dāng)前等待獲取第三線程鎖的其他線程,第八線程還可以記錄新增的線程間阻塞關(guān)系。具體的,第八線程獲取第三線程鎖時(shí),先查找在第二時(shí)刻第三線程鎖的等待隊(duì)列的全部線程,記為第十線程。第八線程將位圖中的第一目標(biāo)列中,各第十線程對(duì)應(yīng)的第三目標(biāo)行的元素值修改為第二數(shù)值。這樣,第八線程查詢(xún)第一目標(biāo)列中各行的元素值,即可獲取第八線程阻塞了哪些線程,確定第八線程關(guān)聯(lián)的線程間阻塞關(guān)系。

41、在第一方面的一種可能實(shí)施方式中,限定了釋放線程鎖所涉及的修改位圖中元素值的方案。第八線程將位圖中的第一目標(biāo)列中,各第十線程對(duì)應(yīng)的第三目標(biāo)行的元素值修改為第二數(shù)值的步驟之后,第八線程在第三時(shí)刻釋放第一線程鎖時(shí),第八線程不再繼續(xù)阻塞當(dāng)前等待獲取第三線程鎖的第十線程。第八線程將位圖中的第一目標(biāo)列中,各第三目標(biāo)行的元素值修改為第一數(shù)值,以指示在先阻塞第十線程的第八線程不再繼續(xù)阻塞第十線程。

42、第二方面,本技術(shù)提供一種電子設(shè)備,電子設(shè)備包括存儲(chǔ)器和處理器,電子設(shè)備的操作系統(tǒng)運(yùn)行在處理器上,存儲(chǔ)器與處理器耦合;存儲(chǔ)器存儲(chǔ)計(jì)算機(jī)執(zhí)行指令;操作系統(tǒng)調(diào)度處理器執(zhí)行存儲(chǔ)器存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,使得電子設(shè)備執(zhí)行如第一方面中任一項(xiàng)的線程調(diào)度方法。

43、在第二方面的一種可能實(shí)施方式中,操作系統(tǒng)用于:

44、在第一線程鎖的等待隊(duì)列中,查找第一線程;其中,第一線程是指第一線程鎖的等待隊(duì)列的全部線程中,被其他線程阻塞且需要優(yōu)先持鎖的線程,第一線程鎖的當(dāng)前持鎖線程為第二線程;

45、操作系統(tǒng)為第一線程添加第一標(biāo)記;

46、第二線程釋放第一線程鎖,添加有第一標(biāo)記的第一線程獲取第一線程鎖。

47、在第二方面的一種可能實(shí)施方式中,操作系統(tǒng)還用于:

48、若未查找到第一線程,操作系統(tǒng)在第一線程鎖的等待隊(duì)列中,查找第三線程;其中,第三線程是指第一線程鎖的等待隊(duì)列的全部線程中,等待時(shí)長(zhǎng)最長(zhǎng)的線程;

49、操作系統(tǒng)為第三線程添加第二標(biāo)記;

50、第二線程釋放第一線程鎖,添加有第二標(biāo)記的第三線程獲取第一線程鎖。

51、在第二方面的一種可能實(shí)施方式中,操作系統(tǒng)為第一線程添加第一標(biāo)記,第二線程釋放第一線程鎖,添加有第一標(biāo)記的第一線程獲取第一線程鎖的步驟,包括:

52、操作系統(tǒng)在第一線程鎖的等待隊(duì)列中,將優(yōu)先持鎖指針指向第一線程;其中,優(yōu)先持鎖指針指向第一線程表示第一線程添加了第一標(biāo)記;

53、第二線程釋放第一線程鎖時(shí),第二線程喚醒優(yōu)先持鎖指針指向的第一線程,以使第一線程獲取第一線程鎖。

54、在第二方面的一種可能實(shí)施方式中,線程調(diào)度方法還包括:

55、第四線程申請(qǐng)第二線程鎖,進(jìn)入第二線程鎖的等待隊(duì)列;第四線程具備在多個(gè)自動(dòng)喚醒時(shí)刻自動(dòng)喚醒的功能;

56、在每個(gè)自動(dòng)喚醒時(shí)刻,第四線程查找第五線程;其中,第五線程為第二線程鎖的當(dāng)前持鎖線程,且第五線程直接或者間接阻塞第四線程;

57、若第五線程未被調(diào)度,第四線程為第五線程添加第三標(biāo)記;

58、電子設(shè)備優(yōu)先調(diào)度添加有第三標(biāo)記的第五線程。

59、在第二方面的一種可能實(shí)施方式中,在每個(gè)自動(dòng)喚醒時(shí)刻,第四線程根據(jù)查找第五線程的步驟,包括:

60、在第一個(gè)自動(dòng)喚醒時(shí)刻,第四線程查找第二線程鎖在第一個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,作為對(duì)應(yīng)第一自動(dòng)喚醒時(shí)刻的第五線程;

61、在第二個(gè)自動(dòng)喚醒時(shí)刻,第四線程查找第二線程鎖在第二個(gè)自動(dòng)喚醒時(shí)刻的持鎖線程,作為對(duì)應(yīng)第二自動(dòng)喚醒時(shí)刻的第五線程;

62、其中,對(duì)應(yīng)第一個(gè)自動(dòng)喚醒時(shí)刻的第五線程,與對(duì)應(yīng)第二個(gè)自動(dòng)喚醒時(shí)刻的第五線程,為相同線程或者不同線程。

63、在第二方面的一種可能實(shí)施方式中,第四線程查找第五線程的步驟,包括:

64、第四線程查找直接阻塞第四線程的第六線程;

65、若直接阻塞第四線程的第六線程獲取第二線程鎖,將第六線程作為第五線程;

66、若直接阻塞第四線程的第六線程未獲取第二線程鎖,查找直接阻塞第六線程的第七線程;

67、若第七線程獲取第二線程鎖,將第七線程作為第五線程。

68、在第二方面的一種可能實(shí)施方式中,第四線程申請(qǐng)第二線程鎖,進(jìn)入第二線程鎖的等待隊(duì)列的步驟之前,方法還包括:

69、若第四線程為主線程,操作系統(tǒng)為第四線程配置對(duì)應(yīng)自動(dòng)喚醒功能的定時(shí)器;

70、定時(shí)器在每個(gè)自動(dòng)喚醒時(shí)刻向第四線程發(fā)送定時(shí)喚醒消息;定時(shí)喚醒消息用于在每個(gè)自動(dòng)喚醒時(shí)刻喚醒第四線程。

71、在第二方面的一種可能實(shí)施方式中,電子設(shè)備存儲(chǔ)有位圖;其中,位圖記錄電子設(shè)備內(nèi)的全部線程間的阻塞關(guān)系,位圖包括行列矩陣,行列矩陣內(nèi)第m行第n列的元素值指示線程m與線程n之間的阻塞關(guān)系,元素值為第一數(shù)值指示線程間不阻塞,元素值為第二數(shù)值指示線程間阻塞,m和n均為線程編號(hào);

72、線程調(diào)度方法還包括:

73、操作系統(tǒng)查詢(xún)位圖中第一線程對(duì)應(yīng)的第一目標(biāo)行中的元素值,以獲得電子設(shè)備內(nèi)的線程間的阻塞關(guān)系。

74、在第二方面的一種可能實(shí)施方式中,線程調(diào)度方法還包括:

75、操作系統(tǒng)創(chuàng)建位圖,并將位圖中的元素值設(shè)為第一數(shù)值;

76、第八線程根據(jù)線程間阻塞關(guān)系的變化,修改位圖中的元素值;其中,第八線程為線程間阻塞關(guān)系發(fā)生變化的線程。

77、在第二方面的一種可能實(shí)施方式中,第八線程根據(jù)線程間阻塞關(guān)系的變化,修改位圖中的元素值的步驟,包括:

78、第八線程在第一時(shí)刻申請(qǐng)第三線程鎖時(shí),查找第九線程;其中,第九線程為在第一時(shí)刻阻塞第八線程的全部線程,第九線程包括第三線程鎖在第一時(shí)刻的持鎖線程和第三線程鎖的等待隊(duì)列的全部線程;

79、第八線程將位圖中第八線程對(duì)應(yīng)的第一目標(biāo)行中,各第九線程對(duì)應(yīng)的第二目標(biāo)列的元素值修改為第二數(shù)值。

80、在第二方面的一種可能實(shí)施方式中,第八線程將位圖中第八線程對(duì)應(yīng)的第一目標(biāo)行中,各第九線程對(duì)應(yīng)的第二目標(biāo)列的元素值修改為第二數(shù)值的步驟之后,線程調(diào)度方法還包括:

81、第八線程在第二時(shí)刻獲取第三線程鎖時(shí),第八線程將位圖中的第一目標(biāo)行中,各第二目標(biāo)列的元素值修改為第一數(shù)值;

82、第八線程查找第十線程;其中,第十線程為在第二時(shí)刻第三線程鎖的等待隊(duì)列的全部線程;

83、第八線程將位圖中的第一目標(biāo)列中,各第十線程對(duì)應(yīng)的第三目標(biāo)行的元素值修改為第二數(shù)值。

84、在第二方面的一種可能實(shí)施方式中,第八線程將位圖中的第一目標(biāo)列中,各第十線程對(duì)應(yīng)的第三目標(biāo)行的元素值修改為第二數(shù)值的步驟之后,線程調(diào)度方法還包括:

85、第八線程在第三時(shí)刻釋放第一線程鎖時(shí),第八線程將位圖中的第一目標(biāo)列中,各第三目標(biāo)行的元素值修改為第一數(shù)值。

86、在第二方面的一種可能實(shí)施方式中,第一數(shù)值為0,第二數(shù)值為1。

87、第三方面,提供了一種電子設(shè)備,該電子設(shè)備具有實(shí)現(xiàn)上述第一方面的線程調(diào)度方法的功能。該功能可以通過(guò)硬件實(shí)現(xiàn),也可以通過(guò)硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。該硬件或軟件包括一個(gè)或多個(gè)與上述功能相對(duì)應(yīng)的模塊。

88、第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)可以執(zhí)行上述第一方面中任一項(xiàng)的線程調(diào)度方法。

89、第五方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如第一方面中任一項(xiàng)的線程調(diào)度方法。

90、其中,第二方面至第五方面中任一種設(shè)計(jì)方式所帶來(lái)的技術(shù)效果可參見(jiàn)第一方面中不同設(shè)計(jì)方式所帶來(lái)的技術(shù)效果,此處不再贅述。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
温泉县| 洛浦县| 离岛区| 驻马店市| 南投市| 蚌埠市| 东阳市| 乌鲁木齐县| 清镇市| 商丘市| 正安县| 荥经县| 夏河县| 冀州市| 读书| 揭西县| 杨浦区| 镇江市| 两当县| 淮阳县| 磴口县| 长葛市| 新宾| 新蔡县| 郸城县| 彭山县| 淮滨县| 嵊州市| 海门市| 长寿区| 北海市| 肇庆市| 福海县| 白山市| 突泉县| 开封市| 淮北市| 绥中县| 盘山县| 阳曲县| 麻栗坡县|