活動物件框架之一 非同步函式

2021-04-30 19:01:16 字數 840 閱讀 9499

引數包含trequeststatus&的,必然是非同步函式,比如rtimer::after()

void after(trequeststatus& astatus, ttimeintervalmicroseconds32 ainterval);

trequeststatus

包含乙個tint狀態值,代表非同步函式的狀態,即 -

處理狀態 -

完成狀態

許多symbian自帶的系統函式都有同步函式和非同步函式兩個版本 *

比較下面兩個函式

tint myfunc1(tany* somearg);

tint myfunc2(tany* somearg, trequeststatus& astatus); *

當myfunc1()被呼叫時,該函式完成之後送立刻返回執行結果

當呼叫myfunc2()時,該函式立刻返回,並且將astatus設為krequestpending,表示該函式正在執行,當程式執行完成之後,astatus發生變化,用來指示執行的結果(如果執行成功則為kerrnone).

呼叫非同步函式示例

*可以同步等待,直到請求完成,比如

rtimer timer; //通過rtimer獲得乙個時間伺服器的控制代碼

timer.createlocal(); //獲得本地時間

trequeststatus status; //生成乙個請求狀態變數status

timer.after(status,1000000);

user::watiforrequest(status);

*但是,這樣會造成執行緒掛起1秒鐘

*更好的解決方案是使用活動物件,當計時器完成之後通知活動物件

「開會」最無聊的活動之一

開會往往是大家無法避免的乙個活動,也常常讓人吐槽 這有什麼好討論的。工作往往會有各式各式的會議,一旦有這樣的想法 自己不是主角,甚至連配角都算不上,管我什麼事情。說明一件事,你沒有參與或者你不關心,與你何干,往往能表明你沒有融入乙個公司 乙個部門 甚至乙個團隊。不過話說回來,如果不正確把握好開會的主...

GEF框架分析之一

首先我們來建立乙個基於 gef的瀏覽器 而不是編輯器 也就是說,它只能瀏覽乙個模型,而不能夠進行編輯。先關注於瀏覽而不是編輯,有助於理解 gef的一些核心的概念。graphicalviewer和createcontrol 方法 在開始之前,最先要弄明白的是,乙個 gef的圖如何能夠顯示在由 view...

Symbian 中的活動物件和CS框架

所有的active object都繼承於cactive類,cactive有兩個純虛方法需要被實現 runl and docancel 在建構函式中需要給定active object的優先值 提出request的函式有三件事情要做 1.判斷是否有request被提出但是還沒有解決 2.提交reques...