本技術(shù)涉及編程語(yǔ)言,尤其是涉及一種編程語(yǔ)言的中斷處理方法、裝置、電子設(shè)備及介質(zhì)。
背景技術(shù):
1、在對(duì)編程語(yǔ)言程序進(jìn)行調(diào)試時(shí),通常需要通過斷點(diǎn)調(diào)試,在暫停執(zhí)行流中分步調(diào)試程序中各個(gè)變量的當(dāng)前值,在變量出錯(cuò)的情況下,調(diào)試到出錯(cuò)的程序進(jìn)行分析,從而找到程序的錯(cuò)誤或漏洞;此外,在c++語(yǔ)言中,觸發(fā)終端輸入的函數(shù)也是一種中斷執(zhí)行方法,這些函數(shù)通過等待外部輸入,在輸入完成后,再繼續(xù)執(zhí)行其他程序。
2、目前,在程序執(zhí)行的過程中,無法通過跨平臺(tái)解釋器暫?;蛑袛鄨?zhí)行編程語(yǔ)言程序,也無法通過休眠方法來對(duì)跨平臺(tái)解釋器執(zhí)行編程語(yǔ)言程序的過程進(jìn)行線程中斷,降低了調(diào)試編程語(yǔ)言的靈活性,進(jìn)而降低了對(duì)編程語(yǔ)言的開發(fā)效率。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本技術(shù)的目的在于提供一種編程語(yǔ)言的中斷處理方法、裝置、電子設(shè)備及介質(zhì),通過預(yù)設(shè)的調(diào)控實(shí)例將編程語(yǔ)言程序中的函數(shù)轉(zhuǎn)換為生成器函數(shù),并利用調(diào)控實(shí)例中的線程示例執(zhí)行該生成器函數(shù),以通過多線程執(zhí)行程序,在觸發(fā)預(yù)設(shè)中斷條件時(shí),對(duì)線程實(shí)例執(zhí)行程序進(jìn)行中斷處理,并在中斷后隨時(shí)恢復(fù)執(zhí)行,實(shí)現(xiàn)了跨平臺(tái)解釋器暫?;蛑袛鄨?zhí)行編程語(yǔ)言程序,提高了調(diào)試編程語(yǔ)言的靈活性,進(jìn)而提高了對(duì)編程語(yǔ)言的開發(fā)效率。
2、本技術(shù)實(shí)施例提供了一種編程語(yǔ)言的中斷處理方法,所述中斷處理方法包括:
3、獲取外部輸入的編程語(yǔ)言程序,并調(diào)用預(yù)設(shè)的調(diào)控實(shí)例將所述編程語(yǔ)言程序中的至少一個(gè)目標(biāo)函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的生成器函數(shù);
4、利用所述調(diào)控實(shí)例中的至少一個(gè)線程實(shí)例分別執(zhí)行至少一個(gè)所述生成器函數(shù);
5、響應(yīng)于所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件,停止調(diào)用所述目標(biāo)生成器函數(shù)對(duì)應(yīng)的循環(huán)方法,以對(duì)所述目標(biāo)生成器函數(shù)的執(zhí)行進(jìn)行中斷處理。
6、進(jìn)一步的,所述方法還包括:
7、響應(yīng)于所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)的異步休眠條件,調(diào)用預(yù)設(shè)的休眠方法控制所述目標(biāo)生成器函數(shù)對(duì)應(yīng)的目標(biāo)線程實(shí)例停止執(zhí)行;
8、在所述目標(biāo)線程實(shí)例的停止持續(xù)時(shí)間達(dá)到所述異步休眠條件對(duì)應(yīng)的時(shí)間閾值之后,調(diào)用預(yù)設(shè)的方法句柄繼續(xù)執(zhí)行所述目標(biāo)生成器函數(shù)。
9、進(jìn)一步的,所述獲取外部輸入的編程語(yǔ)言程序,并調(diào)用預(yù)設(shè)的調(diào)控實(shí)例將所述編程語(yǔ)言程序中的至少一個(gè)目標(biāo)函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的生成器函數(shù),包括:
10、獲取外部輸入的包括至少一個(gè)目標(biāo)函數(shù)的編程語(yǔ)言程序;
11、利用預(yù)設(shè)的調(diào)控實(shí)例中的對(duì)象調(diào)用方法調(diào)用所述目標(biāo)函數(shù),得到調(diào)用返回的至少一個(gè)生成器對(duì)象;
12、基于所述生成器對(duì)象,調(diào)用所述目標(biāo)函數(shù),并得到調(diào)用返回的至少一個(gè)目標(biāo)函數(shù)對(duì)應(yīng)的生成器函數(shù)。
13、進(jìn)一步的,所述利用所述調(diào)控實(shí)例中的至少一個(gè)線程實(shí)例分別執(zhí)行至少一個(gè)所述生成器函數(shù),包括:
14、利用預(yù)設(shè)的運(yùn)行組件獲取所述目標(biāo)函數(shù)中的入口主函數(shù),并確定所述入口主函數(shù)對(duì)應(yīng)的第一生成器函數(shù);
15、利用所述調(diào)控實(shí)例中的第一線程實(shí)例執(zhí)行所述第一生成器函數(shù);
16、響應(yīng)于執(zhí)行所述第一生成器函數(shù)的過程中觸發(fā)預(yù)設(shè)掛起條件,判斷所述目標(biāo)函數(shù)中是否存在至少一個(gè)第二目標(biāo)函數(shù);
17、若存在,則確定所述第二目標(biāo)函數(shù)對(duì)應(yīng)的第二生成器函數(shù),并利用所述調(diào)控實(shí)例中的第二線程實(shí)例執(zhí)行所述第二生成器函數(shù)。
18、進(jìn)一步的,所述利用所述調(diào)控實(shí)例中的第一線程實(shí)例執(zhí)行所述第一生成器函數(shù),包括:
19、基于所述第一生成器函數(shù),確定所述第一生成器函數(shù)對(duì)應(yīng)的生成器組件;
20、將所述生成器組件傳遞至所述調(diào)控實(shí)例中的第一線程實(shí)例中,并判斷當(dāng)前執(zhí)行條件是否符合預(yù)設(shè)要求;
21、若符合,則利用所述第一線程實(shí)例中的執(zhí)行方法執(zhí)行所述第一生成器函數(shù)。
22、進(jìn)一步的,通過以下步驟確定所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件:
23、響應(yīng)于獲取到的外部輸入的針對(duì)至少一個(gè)目標(biāo)生成器函數(shù)的中斷信號(hào),調(diào)用預(yù)設(shè)的中斷方法,并將所述中斷方法對(duì)應(yīng)的返回變量調(diào)整為第一預(yù)設(shè)變量;
24、基于所述中斷方法對(duì)應(yīng)的返回變量為第一預(yù)設(shè)變量,確定所述至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件。
25、進(jìn)一步的,所述確定所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件的步驟,還包括:
26、響應(yīng)于獲取到的至少一個(gè)目標(biāo)生成器函數(shù)返回的數(shù)據(jù)格式為預(yù)設(shè)異步格式,確定所述至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件。
27、本技術(shù)實(shí)施例還提供了一種編程語(yǔ)言的中斷處理裝置,所述中斷處理裝置包括:
28、程序轉(zhuǎn)換模塊,用于獲取外部輸入的編程語(yǔ)言程序,并調(diào)用預(yù)設(shè)的調(diào)控實(shí)例將所述編程語(yǔ)言程序中的至少一個(gè)目標(biāo)函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的生成器函數(shù);
29、程序執(zhí)行模塊,用于利用所述調(diào)控實(shí)例中的至少一個(gè)線程實(shí)例分別執(zhí)行至少一個(gè)所述生成器函數(shù);
30、中斷處理模塊,用于響應(yīng)于所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件,停止調(diào)用所述目標(biāo)生成器函數(shù)對(duì)應(yīng)的循環(huán)方法,以對(duì)所述目標(biāo)生成器函數(shù)的執(zhí)行進(jìn)行中斷處理。
31、進(jìn)一步的,所述中斷處理裝置還包括異步休眠模塊,所述異步休眠模塊用于:
32、響應(yīng)于所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)的異步休眠條件,調(diào)用預(yù)設(shè)的休眠方法控制所述目標(biāo)生成器函數(shù)對(duì)應(yīng)的目標(biāo)線程實(shí)例停止執(zhí)行;
33、在所述目標(biāo)線程實(shí)例的停止持續(xù)時(shí)間達(dá)到所述異步休眠條件對(duì)應(yīng)的時(shí)間閾值之后,調(diào)用預(yù)設(shè)的方法句柄繼續(xù)執(zhí)行所述目標(biāo)生成器函數(shù)。
34、進(jìn)一步的,所述程序轉(zhuǎn)換模塊在用于獲取外部輸入的編程語(yǔ)言程序,并調(diào)用預(yù)設(shè)的調(diào)控實(shí)例將所述編程語(yǔ)言程序中的至少一個(gè)目標(biāo)函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的生成器函數(shù)時(shí),所述程序轉(zhuǎn)換模塊用于:
35、獲取外部輸入的包括至少一個(gè)目標(biāo)函數(shù)的編程語(yǔ)言程序;
36、利用預(yù)設(shè)的調(diào)控實(shí)例中的對(duì)象調(diào)用方法調(diào)用所述目標(biāo)函數(shù),得到調(diào)用返回的至少一個(gè)生成器對(duì)象;
37、基于所述生成器對(duì)象,調(diào)用所述目標(biāo)函數(shù),并得到調(diào)用返回的至少一個(gè)目標(biāo)函數(shù)對(duì)應(yīng)的生成器函數(shù)。
38、進(jìn)一步的,所述程序執(zhí)行模塊在用于利用所述調(diào)控實(shí)例中的至少一個(gè)線程實(shí)例分別執(zhí)行至少一個(gè)所述生成器函數(shù)時(shí),所述程序執(zhí)行模塊用于:
39、利用預(yù)設(shè)的運(yùn)行組件獲取所述目標(biāo)函數(shù)中的入口主函數(shù),并確定所述入口主函數(shù)對(duì)應(yīng)的第一生成器函數(shù);
40、利用所述調(diào)控實(shí)例中的第一線程實(shí)例執(zhí)行所述第一生成器函數(shù);
41、響應(yīng)于執(zhí)行所述第一生成器函數(shù)的過程中觸發(fā)預(yù)設(shè)掛起條件,判斷所述目標(biāo)函數(shù)中是否存在至少一個(gè)第二目標(biāo)函數(shù);
42、若存在,則確定所述第二目標(biāo)函數(shù)對(duì)應(yīng)的第二生成器函數(shù),并利用所述調(diào)控實(shí)例中的第二線程實(shí)例執(zhí)行所述第二生成器函數(shù)。
43、進(jìn)一步的,所述程序執(zhí)行模塊在用于利用所述調(diào)控實(shí)例中的第一線程實(shí)例執(zhí)行所述第一生成器函數(shù)時(shí),所述程序執(zhí)行模塊用于:
44、基于所述第一生成器函數(shù),確定所述第一生成器函數(shù)對(duì)應(yīng)的生成器組件;
45、將所述生成器組件傳遞至所述調(diào)控實(shí)例中的第一線程實(shí)例中,并判斷當(dāng)前執(zhí)行條件是否符合預(yù)設(shè)要求;
46、若符合,則利用所述第一線程實(shí)例中的執(zhí)行方法執(zhí)行所述第一生成器函數(shù)。
47、進(jìn)一步的,所述中斷處理模塊在用于確定所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件時(shí),所述中斷處理模塊用于:
48、響應(yīng)于獲取到的外部輸入的針對(duì)至少一個(gè)目標(biāo)生成器函數(shù)的中斷信號(hào),調(diào)用預(yù)設(shè)的中斷方法,并將所述中斷方法對(duì)應(yīng)的返回變量調(diào)整為第一預(yù)設(shè)變量;
49、基于所述中斷方法對(duì)應(yīng)的返回變量為第一預(yù)設(shè)變量,確定所述至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件。
50、進(jìn)一步的,所述中斷處理模塊在用于確定所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件時(shí),所述中斷處理模塊還用于:
51、響應(yīng)于獲取到的至少一個(gè)目標(biāo)生成器函數(shù)返回的數(shù)據(jù)格式為預(yù)設(shè)異步格式,確定所述至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件。
52、本技術(shù)實(shí)施例還提供一種電子設(shè)備,包括:處理器、存儲(chǔ)器和總線,所述存儲(chǔ)器存儲(chǔ)有所述處理器可執(zhí)行的機(jī)器可讀指令,當(dāng)電子設(shè)備運(yùn)行時(shí),所述處理器與所述存儲(chǔ)器之間通過總線通信,所述機(jī)器可讀指令被所述處理器執(zhí)行時(shí)執(zhí)行如上述的編程語(yǔ)言的中斷處理方法的步驟。
53、本技術(shù)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器運(yùn)行時(shí)執(zhí)行如上述的編程語(yǔ)言的中斷處理方法的步驟。
54、本技術(shù)實(shí)施例提供的編程語(yǔ)言的中斷處理方法、裝置、電子設(shè)備及介質(zhì),所述中斷處理方法包括:獲取外部輸入的編程語(yǔ)言程序,并調(diào)用預(yù)設(shè)的調(diào)控實(shí)例將所述編程語(yǔ)言程序中的至少一個(gè)目標(biāo)函數(shù)轉(zhuǎn)換為對(duì)應(yīng)的生成器函數(shù);利用所述調(diào)控實(shí)例中的至少一個(gè)線程實(shí)例分別執(zhí)行至少一個(gè)所述生成器函數(shù);響應(yīng)于所述生成器函數(shù)中存在至少一個(gè)目標(biāo)生成器函數(shù)觸發(fā)預(yù)設(shè)中斷條件,停止調(diào)用所述目標(biāo)生成器函數(shù)對(duì)應(yīng)的循環(huán)方法,以對(duì)所述目標(biāo)生成器函數(shù)的執(zhí)行進(jìn)行中斷處理。
55、與現(xiàn)有技術(shù)中的直接解釋執(zhí)行編程語(yǔ)言程序的方法相比,通過預(yù)設(shè)的調(diào)控實(shí)例將編程語(yǔ)言程序中的函數(shù)轉(zhuǎn)換為生成器函數(shù),并利用調(diào)控實(shí)例中的線程示例執(zhí)行該生成器函數(shù),以通過多線程執(zhí)行程序,在觸發(fā)預(yù)設(shè)中斷條件時(shí),對(duì)線程實(shí)例執(zhí)行程序進(jìn)行中斷處理,并在中斷后隨時(shí)恢復(fù)執(zhí)行,實(shí)現(xiàn)了跨平臺(tái)解釋器暫?;蛑袛鄨?zhí)行編程語(yǔ)言程序,提高了調(diào)試編程語(yǔ)言的靈活性,進(jìn)而提高了對(duì)編程語(yǔ)言的開發(fā)效率。
56、為使本技術(shù)的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。