欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種線程中掛時(shí)控的方法與流程

文檔序號:12469448閱讀:來源:國知局

技術(shù)特征:

1.一種線程中掛時(shí)控的方法,其特征在于,包括以下步驟:

步驟1,創(chuàng)建進(jìn)程的時(shí)控隊(duì)列timerList、掛時(shí)控函數(shù)setTimer_Thread以及時(shí)控響應(yīng)函數(shù)timerFunction;

步驟2,創(chuàng)建子線程及與主線程進(jìn)行交互的消息鏈表,屏蔽掉子線程中時(shí)控信號,需要掛時(shí)控時(shí),直接調(diào)用掛時(shí)控函數(shù)setTimer_Thread掛時(shí)控;

步驟3,主線程響應(yīng)時(shí)到信號,并執(zhí)行時(shí)控響應(yīng)函數(shù)timerFunction,將線程時(shí)控屬性轉(zhuǎn)換為時(shí)控消息加入到對應(yīng)線程的消息鏈表中;

步驟4,子線程取出時(shí)控消息,得到時(shí)控屬性,根據(jù)時(shí)控屬性進(jìn)行相應(yīng)的時(shí)控處理。

2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟1中,所述時(shí)控隊(duì)列timerList用于存儲整個(gè)進(jìn)程所有線程的時(shí)控;時(shí)控隊(duì)列timerList中的每個(gè)時(shí)控項(xiàng)包含兩個(gè)時(shí)控屬性,分別為時(shí)控屬性一和時(shí)控屬性二,時(shí)控屬性一用于指示線程ID,時(shí)控屬性二用于指示時(shí)間屬性ID;時(shí)控隊(duì)列timerList中,各時(shí)控項(xiàng)按時(shí)控時(shí)到先后順序依次排列;

掛時(shí)控函數(shù)setTimer_Thread包含四個(gè)參數(shù):時(shí)控屬性一、時(shí)控屬性二、時(shí)控標(biāo)識和時(shí)間值,其中,時(shí)控標(biāo)識用于指示是掛時(shí)控還是刪除時(shí)控,時(shí)間值是指時(shí)控的相對于掛時(shí)控時(shí)的時(shí)間值;

時(shí)控響應(yīng)函數(shù)timerFunction為進(jìn)程的時(shí)控響應(yīng)函數(shù),所有時(shí)到響應(yīng)都首先執(zhí)行此函數(shù)。

3.根據(jù)權(quán)利要求2所述的方法,其特征在于,步驟1中所述掛時(shí)控函數(shù)setTimer_Thread執(zhí)行如下步驟:

步驟1-1,根據(jù)時(shí)控屬性一與時(shí)控屬性二生成Hash關(guān)鍵字;

步驟1-2,判定時(shí)控標(biāo)識,如果為掛時(shí)控,則轉(zhuǎn)到步驟1-3,如果是取消時(shí)控則轉(zhuǎn)到步驟1-6;

步驟1-3,根據(jù)Hash關(guān)鍵字找到時(shí)控項(xiàng)的存儲位置,存儲時(shí)控項(xiàng);

步驟1-4,根據(jù)時(shí)控的時(shí)到順序,在時(shí)控隊(duì)列timerList中找到對應(yīng)的位置,插入該時(shí)控;

步驟1-5,如果該時(shí)控處于時(shí)控隊(duì)列timerList隊(duì)首,則調(diào)用系統(tǒng)函數(shù)setitimer重掛進(jìn)程的時(shí)控;

步驟1-6,根據(jù)Hash關(guān)鍵字,找到該時(shí)控的存儲位置及在時(shí)控隊(duì)列中的位置;

步驟1-7,從時(shí)控隊(duì)列timerList中刪除該時(shí)控;

步驟1-8,如果該時(shí)控處于時(shí)控隊(duì)列timerList隊(duì)首,則調(diào)用系統(tǒng)函數(shù)setitimer根據(jù)時(shí)控隊(duì)列timerList新隊(duì)首的時(shí)控項(xiàng)重掛進(jìn)程的時(shí)控。

4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟2中,所述子線程與主線程進(jìn)行交互的消息鏈表項(xiàng)包含三部分:消息長度、消息屬性標(biāo)識和消息內(nèi)容,消息長度指消息的字節(jié)數(shù);消息屬性標(biāo)識用于指示該消息是普通消息還是時(shí)控消息;消息內(nèi)容即消息的詳細(xì)內(nèi)容,如果消息屬性標(biāo)識為1,則其前兩個(gè)字節(jié)存儲的是時(shí)控屬性二。

5.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟2中,每個(gè)子線程對應(yīng)一個(gè)消息鏈表,主線程或子線程訪問該消息鏈表時(shí),利用線程鎖進(jìn)行加鎖,訪問結(jié)束解鎖。

6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟3中,所述主線程響應(yīng)時(shí)到信號,并執(zhí)行時(shí)控響應(yīng)函數(shù)timerFunction,包括如下步驟:

步驟3-1,從時(shí)控隊(duì)列timerList隊(duì)首取出一個(gè)時(shí)控項(xiàng),并調(diào)整其下一個(gè)時(shí)控的前向指針;

步驟3-2,判定時(shí)控項(xiàng)的時(shí)控屬性一,如果為0,轉(zhuǎn)向步驟3-3;如果為1,則轉(zhuǎn)向步驟3-4;

步驟3-3,主線程根據(jù)時(shí)控屬性二進(jìn)行相應(yīng)的時(shí)控處理,然后轉(zhuǎn)向步驟3-8;

步驟3-4,根據(jù)時(shí)控屬性一找到對應(yīng)線程ID的子線程,把時(shí)控屬性二封裝成時(shí)控消息;

步驟3-5,對該對應(yīng)線程的消息鏈表加鎖;

步驟3-6,若該消息鏈表為空,直接插入時(shí)控消息;若不為空,則從頭開始查找到第一個(gè)消息屬性標(biāo)識msgFlag為0的項(xiàng),即第一個(gè)普通消息,在其前面插入時(shí)控消息;

步驟3-7,對該消息鏈表解鎖,并通知該子線程;

步驟3-8,根據(jù)時(shí)控隊(duì)列timerList隊(duì)首的時(shí)控項(xiàng),調(diào)用系統(tǒng)函數(shù)setitimer重新掛進(jìn)程的時(shí)控。

7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟4包括如下步驟:

步驟4-1,屏蔽SIGALRM信號,確保線程不會響應(yīng)進(jìn)程的信號;

步驟4-2,對消息鏈表加鎖;

步驟4-3,依次取出消息鏈表中的消息,存入線程的局部鏈表中;

步驟4-4,對消息鏈表解鎖;

步驟4-5,從線程的局部鏈表中逐一取出消息處理;

步驟4-6,判定消息屬性標(biāo)識msgFlag,如果為普通消息,轉(zhuǎn)到步驟4-7,如果為時(shí)控消息,則轉(zhuǎn)到步驟4-8;

步驟4-7,對該普通消息進(jìn)行處理,返回到步驟4-2;

步驟4-8,從該時(shí)控消息中提取時(shí)控屬性二,進(jìn)行對應(yīng)的時(shí)控處理;

步驟4-9,返回到步驟4-2。

當(dāng)前第2頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
衡阳市| 光山县| 镇原县| 庆城县| 合作市| 阿坝县| 石林| 桐城市| 永顺县| 荃湾区| 兴安盟| 洞头县| 衡水市| 门源| 油尖旺区| 高邮市| 任丘市| 屏东市| 冕宁县| 静乐县| 南宁市| 哈巴河县| 剑阁县| 鸡泽县| 宝山区| 遂溪县| 民县| 平湖市| 亚东县| 高雄县| 白城市| 中西区| 芜湖县| 临潭县| 南康市| 汝南县| 丘北县| 且末县| 凤山市| 炎陵县| 抚顺市|