• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            一、使用活動(dòng)對(duì)象的原因

            Symbian OS廣泛使用了事件驅(qū)動(dòng)模型,活動(dòng)對(duì)象將傳統(tǒng)的等待循環(huán)封裝到一個(gè)類(lèi)中,在同一個(gè)線(xiàn)程中運(yùn)行的活動(dòng)對(duì)象之間切換的代價(jià)比線(xiàn)程上下文的切換代價(jià)低得多,所以使用活動(dòng)對(duì)象更適合Symbian OS的事件驅(qū)動(dòng)多任務(wù)。同樣使用搶占式多線(xiàn)程對(duì)于事件處理也不方便,因?yàn)閾屨际蕉嗑€(xiàn)程需要通過(guò)例如互斥體、信號(hào)量等同步原語(yǔ)來(lái)保護(hù)共享對(duì)象,在Symbian OS 要實(shí)現(xiàn)共享非常難。所以利用活動(dòng)對(duì)象實(shí)現(xiàn)事件驅(qū)動(dòng)模型最為合適。

            注意:一旦一個(gè)活動(dòng)對(duì)象在處理事件,它就無(wú)法被另一個(gè)活動(dòng)對(duì)象的事件處理程序搶占,也就是如果對(duì)實(shí)時(shí)性要求較高的應(yīng)用,應(yīng)考慮用高優(yōu)先級(jí)線(xiàn)程和進(jìn)程來(lái)實(shí)現(xiàn)。

            二、活動(dòng)對(duì)象的應(yīng)用

            1、構(gòu)造

            和線(xiàn)程類(lèi)似,活動(dòng)對(duì)象也有一個(gè)優(yōu)先級(jí)值來(lái)決定它們?nèi)绾伪徽{(diào)度。從CActive派生的類(lèi)必須調(diào)用基類(lèi)中的作為保護(hù)成員的構(gòu)造函數(shù),并傳遞一個(gè)參數(shù)來(lái)設(shè)置活動(dòng)對(duì)象的優(yōu)先級(jí)。

            2、提交請(qǐng)求

            活動(dòng)對(duì)象類(lèi)會(huì)向調(diào)用者提供公有方法用以發(fā)出請(qǐng)求,也就是說(shuō)通常擁有一個(gè)發(fā)出異步完成請(qǐng)求、生成事件的對(duì)象,例如RTimer類(lèi)的定時(shí)器對(duì)象。

            • 請(qǐng)求方法應(yīng)檢查確認(rèn)在試圖提交另一個(gè)請(qǐng)求之前沒(méi)有請(qǐng)求已經(jīng)被提交。
            • 活動(dòng)對(duì)象應(yīng)向服務(wù)提供者發(fā)送請(qǐng)求,傳入其TRequestStatus類(lèi)型的iStatus成員變量作為參數(shù)。
            • 請(qǐng)求成功提交了,請(qǐng)求方法將調(diào)用CActive基類(lèi)的SetActive()方法,向活動(dòng)調(diào)度器指明請(qǐng)求是已經(jīng)被提交還是現(xiàn)成被選中。

            3、事件處理

            活動(dòng)對(duì)象必須實(shí)現(xiàn)CActive基類(lèi)跌純虛成員函數(shù)RunL(),當(dāng)異步服務(wù)提供者完成事件發(fā)生,而且活動(dòng)調(diào)度器選擇了活動(dòng)對(duì)象處理該事件時(shí),調(diào)用活動(dòng)對(duì)象的RunL()函數(shù)。

            image

            注意:每個(gè)活動(dòng)對(duì)象必須通過(guò)實(shí)現(xiàn)基類(lèi)CActive的成員純虛函數(shù)RunL()來(lái)處理完成事件。

            4、撤消

            調(diào)用Cancel()進(jìn)行撤消,該方法調(diào)用純虛函數(shù)DoCancel()。用戶(hù)需要重載DoCancel(),進(jìn)行撤消工作以及請(qǐng)求相關(guān)的必要清除工作。

            5、錯(cuò)誤處理

            活動(dòng)對(duì)象提供了RunError()虛函數(shù),當(dāng)活動(dòng)對(duì)象的RunL()方法發(fā)生異常退出時(shí),活動(dòng)調(diào)度器調(diào)用這個(gè)方法。

            6、析構(gòu)

            CActive派生類(lèi)的析構(gòu)函數(shù)在清除過(guò)程執(zhí)行前總是坑用Cancel()來(lái)中止所有選定的請(qǐng)求。

            (未完待續(xù))

            Posted on 2009-06-21 21:17 曾浩 閱讀(1462) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C/C++Symbian
            久久午夜无码鲁丝片| 久久久久精品国产亚洲AV无码 | 久久亚洲精品无码AV红樱桃| 亚洲精品无码久久久影院相关影片| 中文字幕亚洲综合久久2| 国产精品99久久久精品无码 | 久久99精品久久久大学生| 久久精品国产亚洲AV高清热| 久久国产精品久久| 色欲久久久天天天综合网 | 久久精品国产亚洲AV香蕉| …久久精品99久久香蕉国产| 97久久久久人妻精品专区| 久久国产精品成人影院| 香蕉久久夜色精品升级完成| 999久久久免费精品国产| 精品多毛少妇人妻AV免费久久| 久久久一本精品99久久精品66 | 久久亚洲国产成人精品性色| 97久久超碰国产精品2021| 精品久久777| 久久中文字幕无码专区| 久久久久亚洲国产| 久久人人爽人人爽人人AV东京热 | 一级做a爰片久久毛片毛片| 久久亚洲精品成人无码网站| 久久婷婷五月综合97色| 日韩精品久久久久久| 亚洲а∨天堂久久精品| 麻豆成人久久精品二区三区免费 | 看久久久久久a级毛片| 久久国产精品-国产精品| 久久人人爽人人爽人人片AV东京热| 久久久久久久久久久精品尤物| 国产精品久久久久久吹潮| 女同久久| 青青青国产成人久久111网站| 无码人妻久久一区二区三区蜜桃| 久久夜色精品国产亚洲| 中文国产成人精品久久不卡| 国内精品久久久久久久涩爱|