亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種單線程模擬多線程的方法與流程

文檔序號(hào):12786204閱讀:1279來源:國(guó)知局

本發(fā)明涉及多任務(wù)多線程功能實(shí)現(xiàn)技術(shù)領(lǐng)域,尤其涉及一種單線程模擬多線程的方法。



背景技術(shù):

物聯(lián)網(wǎng)采集控制系統(tǒng)早已滲透到諸如工業(yè)生產(chǎn)、智能家居、宇宙開發(fā)、海洋探測(cè)、環(huán)境保護(hù)、資源調(diào)查、醫(yī)學(xué)診斷、生物工程、甚至文物保護(hù)等等極其之泛的領(lǐng)域。數(shù)據(jù)采集和終端控制器在整個(gè)系統(tǒng)中也占據(jù)舉足輕重的位置。終端控制和采集系統(tǒng)是萬物互聯(lián)中和人與物交流的關(guān)鍵一環(huán),它需要執(zhí)行人的思想,和反饋物體的當(dāng)前狀態(tài)。終端設(shè)備往往數(shù)量眾多分布也廣泛,對(duì)于成本的要求也苛刻,所以終端控制和采集設(shè)備在執(zhí)行單元上往往選擇資源比較有限的單片機(jī)芯片,這也就和控制器需要執(zhí)行的多重復(fù)雜的任務(wù)形成矛盾。在有的項(xiàng)目中,單片機(jī)系統(tǒng)可能需要處理比較復(fù)雜的邏輯和任務(wù),由于資源限制,無法安裝操作系統(tǒng),程序邏輯往往過于臃腫復(fù)雜,且軟件的實(shí)時(shí)性能大大降低。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明為克服上述的不足之處,目的在于提供一種單線程模擬多線程的方法,本方法可以更好地利用MCU資源和性能,優(yōu)化程序處理邏輯。

本發(fā)明是通過以下技術(shù)方案達(dá)到上述目的:一種單線程模擬多線程的方法,包括如下步驟:

(1)創(chuàng)建并初始化一個(gè)模擬線程池,用以存放模擬線程;

(2)創(chuàng)建注冊(cè)若干模擬線程,并將新模擬線程登記到模擬線程池中;

(3)遍歷模擬線程池中的所有模擬線程,判斷各個(gè)模擬線程的執(zhí)行標(biāo)識(shí)thread.flag:若為true,則執(zhí)行步驟(4),否則繼續(xù)判斷下一個(gè)模擬線程的執(zhí)行標(biāo)識(shí);

(4)進(jìn)行該模擬線程的運(yùn)行策略判斷,并按照判斷得到的運(yùn)行策略執(zhí)行該模擬線程;

(5)執(zhí)行完成后跳轉(zhuǎn)回到步驟(3)直至判斷完模擬線程池中的所有模擬線程。

作為優(yōu)選,所述模擬線程池的大小根據(jù)MCU資源大小自定義。

作為優(yōu)選,所述模擬線程登記到模擬線程池中需登記如下屬性:

(i)pThread.con:線程執(zhí)行模式;

(ii)pThread.cnt:線程執(zhí)行次數(shù);

(iii)pThread.freq:線程執(zhí)行周期;

(iv)pThread.fun:回調(diào)函數(shù);

(v)pThread.flag:可調(diào)用標(biāo)識(shí)。

作為優(yōu)選,所述步驟(4)模擬線程的運(yùn)行策略如下所示:

(a)策略O(shè)NCEDELAY:即延時(shí)運(yùn)行一次,等待延時(shí)時(shí)間到,并調(diào)用模擬線程回調(diào)函數(shù)一次,調(diào)用完后注銷模擬線程;

(b)策略MANY:即執(zhí)行多次,模擬線程按照設(shè)定的時(shí)間周期調(diào)用pThread->cnt次后,注銷該模擬線程;pThread->cnt為注冊(cè)模擬線程時(shí)設(shè)置;

(c)策略FOREVER:即永久執(zhí)行,永久周期性調(diào)用模擬線程,直到主線程退出消亡;

(d)策略RESULT:即按執(zhí)行結(jié)果執(zhí)行,按照前一次調(diào)用結(jié)果判斷是否執(zhí)行下一次;若前一次調(diào)用返回錯(cuò)誤,則注銷模擬線程;否則繼續(xù)調(diào)用。

作為優(yōu)選,所述步驟(1)-步驟(5)執(zhí)行過程中,時(shí)鐘滴答定時(shí)器實(shí)時(shí)計(jì)算每個(gè)模擬線程的執(zhí)行頻率及延時(shí)控制,判斷每個(gè)模擬線程計(jì)時(shí)是否到達(dá)預(yù)設(shè)的時(shí)間,若到達(dá)預(yù)設(shè)時(shí)間,則置該模擬線程的可調(diào)用標(biāo)識(shí)pThread.flag為ture。

作為優(yōu)選,所述在整個(gè)方法運(yùn)行的任意步驟中,允許人為注冊(cè)或注銷模擬線程。

本發(fā)明的有益效果在于:本發(fā)明方法可以更好地利用MCU資源和性能,優(yōu)化程序處理邏輯。

附圖說明

圖1是本發(fā)明方法的流程示意圖。

具體實(shí)施方式

下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步描述,但本發(fā)明的保護(hù)范圍并不僅限于此:

實(shí)施例:如圖1所示,一種單線程模擬多線程的方法具體包括如下步驟:

(1)創(chuàng)建并初始化一個(gè)模擬線程池,并用以存放模擬線程;線程初始化主要是初始化線程池中的模擬線程初始化值(不包含主線程,主線程非模擬線程),初始值為0。線程池能夠容納的最大模擬線程的數(shù)目一定,根據(jù)MCU內(nèi)存資源進(jìn)行確定。每注冊(cè)一個(gè)新的線程,線程池會(huì)分配一個(gè)新空間給該線程,反之每注銷一個(gè)線程,則從線程池中刪除該線程資源。

(2)創(chuàng)建注冊(cè)若干模擬線程,并進(jìn)行線程登記,即把新創(chuàng)建的模擬線程登記到線程池中,模擬線程需要登記如下屬性:

pThread.con:線程執(zhí)行模式

pThread.cnt:線程執(zhí)行次數(shù)

pThread.freq:線程執(zhí)行周期

pThread.fun:回調(diào)函數(shù)

pThread.flag:可調(diào)用標(biāo)識(shí);

(3)遍歷線程池中的所有線程,并進(jìn)行第(4)步判斷。

(4)判斷線程池中各線程的執(zhí)行標(biāo)識(shí)thread.flag,如果為true,則繼續(xù)下一步策略判斷,否則繼續(xù)判斷下一個(gè)模擬線程的執(zhí)行標(biāo)識(shí)。

(5)判斷該模擬線程運(yùn)行策略,每個(gè)模擬線程有以下可運(yùn)行的策略,具體如下所示:

1、策略O(shè)NCEDELAY(延時(shí)運(yùn)行一次):等待延時(shí)時(shí)間到,并調(diào)用模擬線程回調(diào)函數(shù)一次,調(diào)用完后,注銷該線程。

2、策略MANY(執(zhí)行多次):模擬線程按照設(shè)定的時(shí)間周期,調(diào)用pThread->cnt次后,注銷該線程。pThread->cnt為注冊(cè)該線程時(shí)設(shè)置。

3、策略FOREVER(永久執(zhí)行):永久的周期性地調(diào)用模擬線程,直到主線程退出銷亡。

4、策略RESULT(按執(zhí)行結(jié)果執(zhí)行):按照上一次調(diào)用結(jié)果判斷是否執(zhí)行下一次。如果前一次調(diào)用返回錯(cuò)誤,則注銷該模擬線程,否則繼續(xù)調(diào)用。

(6)執(zhí)行模擬線程,按照第(4)步所判斷的運(yùn)行策略執(zhí)行模擬線程

(7)執(zhí)行完成后回到步驟(3),當(dāng)最后一個(gè)線程判斷或者執(zhí)行完成后回到(2)繼續(xù)從頭遍歷線程池。

在整個(gè)(1)-(7)過程中,時(shí)鐘滴答定時(shí)器時(shí)刻計(jì)算每個(gè)模擬線程的執(zhí)行頻率,以及延時(shí)控制,判斷每個(gè)模擬線程計(jì)時(shí)是否到達(dá)設(shè)定的時(shí)間,如果到達(dá)設(shè)定時(shí)間則置該線程的可調(diào)用標(biāo)識(shí)pThread.flag為ture。

其中,時(shí)鐘滴答定時(shí)器即為sysclk內(nèi)核定時(shí)器,時(shí)鐘滴答回調(diào)函數(shù)(線程調(diào)度程序)以1ms為周期定時(shí)執(zhí)行,時(shí)間計(jì)數(shù)器timer.1ms變量會(huì)計(jì)數(shù)一次,檢測(cè)各個(gè)線程運(yùn)行狀態(tài)標(biāo)識(shí)和運(yùn)行頻率,當(dāng)時(shí)間計(jì)數(shù)到該線程運(yùn)行的時(shí)間節(jié)點(diǎn),打開運(yùn)行使能標(biāo)識(shí),之后主線程執(zhí)行函數(shù)判斷該使能標(biāo)識(shí)為使能,則執(zhí)行該線程,否則不執(zhí)行。

時(shí)鐘滴答定時(shí)器還可完成線程調(diào)度室;調(diào)度程序每一毫秒check一次當(dāng)前時(shí)間節(jié)點(diǎn),判斷是否到達(dá)某個(gè)模擬線程的執(zhí)行節(jié)點(diǎn),如果到達(dá),則置位該模擬線程的pThread.flag(可調(diào)用標(biāo)識(shí))為true,等待主線程調(diào)用。

在整個(gè)程序運(yùn)行過程中,允許在任意模擬線程中或者主線程中,注冊(cè)或注銷模擬線程。新注冊(cè)的模擬線程,可以按照設(shè)定的時(shí)間周期周期性執(zhí)行,極大方便了任務(wù)對(duì)時(shí)間控制需求。

以上的所述乃是本發(fā)明的具體實(shí)施例及所運(yùn)用的技術(shù)原理,若依本發(fā)明的構(gòu)想所作的改變,其所產(chǎn)生的功能作用仍未超出說明書及附圖所涵蓋的精神時(shí),仍應(yīng)屬本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1