一種基于緩存鎖的多任務(wù)時序執(zhí)行方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多線程及多任務(wù)技術(shù)領(lǐng)域,尤其涉及的是一種基于緩存鎖的多任務(wù)時序執(zhí)行方法及系統(tǒng)。
【背景技術(shù)】
[0002]在當(dāng)前移動互聯(lián)網(wǎng)時代,終端會采用多個線程來執(zhí)行多種任務(wù)。在一個有時序要求的并發(fā)系統(tǒng)中,通常有多個線程需要競爭執(zhí)行多種任務(wù),且這些任務(wù)的開始執(zhí)行時間必須按照一定順序進(jìn)行,常用的方法是使用線程鎖等技術(shù),但這種技術(shù)使用復(fù)雜,且使用不當(dāng)時會引起死鎖等問題。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題在于,提供一種基于緩存鎖的多任務(wù)時序執(zhí)行方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)中多任務(wù)競爭系統(tǒng)中的時序控制機(jī)制復(fù)雜容易引起死鎖的問題。
[0005]本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下:
一種基于緩存鎖的多任務(wù)時序執(zhí)行方法,其中,包括:
A、將N個任務(wù)加入任務(wù)列表中,確定N個任務(wù)的開始執(zhí)行順序;根據(jù)N個任務(wù)的開始執(zhí)行順序依次制定對應(yīng)的N個緩存鎖,并設(shè)置N個緩存鎖的值均為第一指定值;制定監(jiān)控鎖;其中,N為正整數(shù);
B、啟動M個線程去獲取N個緩存鎖,每個緩存鎖只能被一個線程獲取,N個緩存鎖按照所述開始執(zhí)行順序依次被M個線程獲取,獲取到緩存鎖的N個線程按照所述開始執(zhí)行順序執(zhí)行對應(yīng)的任務(wù),當(dāng)所述任務(wù)執(zhí)行完后,將對應(yīng)的緩存鎖的值設(shè)置為第二指定值,剩余L個線程去獲取監(jiān)控鎖;其中肩為正整數(shù),且M大于N+1,L=M-N;
C、獲取所述監(jiān)控鎖的線程執(zhí)行監(jiān)控任務(wù),對多任務(wù)時序執(zhí)行結(jié)果進(jìn)行監(jiān)控。
[0006]所述的基于緩存鎖的多任務(wù)時序執(zhí)行方法,其中,所述步驟B具體包括:
B1、啟動M個線程去獲取N個緩存鎖,每個緩存鎖只能被一個線程獲取,N個緩存鎖按照所述開始執(zhí)行順序依次被M個線程獲取,所有線程去獲取第一個緩存鎖,獲取到第一個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第一個緩存鎖的值設(shè)置為第二指定值;其中,N為正整數(shù),M為正整數(shù),且M大于N+1;
B2、剩余M-1個線程去獲取第二個緩存鎖,獲取到第二個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第二個緩存鎖的值設(shè)置為第二指定值;
B3、剩余M-2個線程去獲取剩余的N-2個緩存鎖,直到第N個緩存鎖被獲取到為止,獲取到第N個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第N個緩存鎖的值設(shè)置為第二指定值,剩余L個線程去獲取所述監(jiān)控鎖,其中,L=M-N。
[0007]所述的基于緩存鎖的多任務(wù)時序執(zhí)行方法,其中,所述步驟A還包括:
Al、設(shè)置監(jiān)控鎖的失效時間,所述失效時間大于所述多個任務(wù)中的最長執(zhí)行時間。
[0008]所述的基于緩存鎖的多任務(wù)時序執(zhí)行方法,其中,所述步驟C具體包括:
C11、獲取所述監(jiān)控鎖的線程執(zhí)行監(jiān)控任務(wù),每隔第一時間檢查各個緩存鎖的值是否均為第二指定值,若為是,則執(zhí)行步驟C13;若為否,則執(zhí)行步驟C12;其中,所述第一時間小于所述失效時間;
C12、檢查所述監(jiān)控鎖是否失效,若為是,則執(zhí)行步驟C13;若為否,則返回步驟Cll;
C13、刪除各個緩存鎖及監(jiān)控鎖,任務(wù)結(jié)束。
[0009]所述的基于緩存鎖的多任務(wù)時序執(zhí)行方法,其中,所述第一指定值為0,所述第二指定值為I。
[0010]—種基于緩存鎖的多任務(wù)時序執(zhí)行系統(tǒng),其中,包括:
任務(wù)制定模塊,用于將N個任務(wù)加入任務(wù)列表中,確定N個任務(wù)的開始執(zhí)行順序;根據(jù)N個任務(wù)的開始執(zhí)行順序依次制定對應(yīng)的N個緩存鎖,并設(shè)置N個緩存鎖的值均為第一指定值;制定監(jiān)控鎖;其中,N為正整數(shù);
任務(wù)執(zhí)行模塊,用于啟動M個線程去獲取N個緩存鎖,每個緩存鎖只能被一個線程獲取,N個緩存鎖按照所述開始執(zhí)行順序依次被M個線程獲取,獲取到緩存鎖的N個線程按照所述開始執(zhí)行順序執(zhí)行對應(yīng)的任務(wù),當(dāng)所述任務(wù)執(zhí)行完后,將對應(yīng)的緩存鎖的值設(shè)置為第二指定值,剩余L個線程去獲取監(jiān)控鎖;其中1為正整數(shù),且M大于N+1,L=M-N;
任務(wù)監(jiān)控模塊,用于獲取所述監(jiān)控鎖的線程執(zhí)行監(jiān)控任務(wù),對多任務(wù)時序執(zhí)行結(jié)果進(jìn)行監(jiān)控。
[0011]所述的基于緩存鎖的多任務(wù)時序執(zhí)行系統(tǒng),其中,所述任務(wù)執(zhí)行模塊包括:
啟動單元,用于啟動M個線程去獲取N個緩存鎖,每個緩存鎖只能被一個線程獲取,N個緩存鎖按照所述開始執(zhí)行順序依次被M個線程獲取,所有線程去獲取第一個緩存鎖,獲取到第一個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第一個緩存鎖的值設(shè)置為第二指定值;其中,N為正整數(shù),M為正整數(shù),且M大于N+1;
獲取單元,用于通過剩余M-1個線程去獲取第二個緩存鎖,獲取到第二個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第二個緩存鎖的值設(shè)置為第二指定值;
執(zhí)行單元,用于通過剩余M-2個線程去獲取剩余的N-2個緩存鎖,直到第N個緩存鎖被獲取到為止,獲取到第N個緩存鎖的線程執(zhí)行對應(yīng)的任務(wù),執(zhí)行完成后,將第N個緩存鎖的值設(shè)置為第二指定值,剩余L個線程去獲取所述監(jiān)控鎖,其中,L=M-N。
[0012]所述的基于緩存鎖的多任務(wù)時序執(zhí)行系統(tǒng),其中,所述任務(wù)制定模塊包括:
時間設(shè)置單元,用于設(shè)置監(jiān)控鎖的失效時間,所述失效時間大于所述多個任務(wù)中的最長執(zhí)行時間。
[0013]所述的基于緩存鎖的多任務(wù)時序執(zhí)行系統(tǒng),其中,所述任務(wù)監(jiān)控模塊包括:
鎖值檢查單元,用于獲取所述監(jiān)控鎖的線程執(zhí)行監(jiān)控任務(wù),每隔第一時間檢查各個緩存鎖的值是否均為第二指定值,若為是,則執(zhí)行任務(wù)結(jié)束單元;若為否,則執(zhí)行失效檢查單元;其中,所述第一時間小于所述失效時間;
失效檢查單元,用于、檢查所述監(jiān)控鎖是否失效,若為是,則執(zhí)行任務(wù)結(jié)束單元;若為否,則返回鎖值檢查單元;
任務(wù)結(jié)束單元,用于刪除各個緩存鎖及監(jiān)控鎖,任務(wù)結(jié)束。
[0014]所述的基于緩存鎖的多任務(wù)時序執(zhí)行系統(tǒng),其中,所述第一指定值為0,所述第二指定值為I。
[0015]本發(fā)明所提供的一種基于緩存鎖的多任務(wù)時序執(zhí)行方法及系統(tǒng),有效地解決了現(xiàn)有技術(shù)中多任務(wù)競爭系統(tǒng)中的時序控制機(jī)制復(fù)雜容易引起死鎖的問題,通過將N個任務(wù)加入任務(wù)列表中,確定N個任務(wù)的開始執(zhí)行順序;根據(jù)N個任務(wù)的開始執(zhí)行順序依次制定對應(yīng)的N個緩存鎖,并設(shè)置N個緩存鎖的值均為第一指定值;制定監(jiān)控鎖;其中4為正整數(shù);啟動M個線程去獲取N個緩存鎖,每個緩存鎖只能被一個線程獲取,N個緩存鎖按照所述開始執(zhí)行順序依次被M個線程獲取,獲取到緩存鎖的N個線程按照所述開始執(zhí)行順序執(zhí)行對應(yīng)的任務(wù),當(dāng)所述任務(wù)執(zhí)行完后,將對應(yīng)的緩存鎖的值設(shè)置為第二指定值,剩余L個線程去獲取監(jiān)控鎖;其中』為正整數(shù),且M大于N+1,L=M-N;獲取所述監(jiān)控鎖的線程執(zhí)行監(jiān)控任務(wù),對多任務(wù)時序執(zhí)行結(jié)果進(jìn)行監(jiān)控;提供了一種借助緩存鎖來按照順序并且競爭執(zhí)行任務(wù)的方案,簡化了多任務(wù)競爭系統(tǒng)中的時序控制機(jī)制,不會出現(xiàn)死鎖等問題,帶來了大大的方便。