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