vc++中timer很容易給人感覺是多執行緒的。其實不然,他是通過訊息觸發事件的。通過settimer函式設定定時器後,在規定時間內向訊息佇列中加入wm_timer訊息來觸發事件。並且只有該訊息返回後才處理下個訊息。
可以通過程式來驗證。
bool bthreadend = true;
uint threadpro(lpvoid pparam);
void ctestthreaddlg::ontimer(uint nidevent)
cdialog::ontimer(nidevent);
} uint threadpro(lpvoid pparam) //執行緒事件函式
bthreadend = true;
return 1;
} 以上程式,用timer的死迴圈和執行緒事件函式的死迴圈對比可知。。timer並非多執行緒的。。。
ontimer實現了若干段程式的並行執行。
對於單cpu來說,是不可能實現程式段的並行執行的,只能是交替執行。其實它與其他的訊息沒有什麼大的區別,只不過此訊息的入隊是迴圈的。
不知道小弟說的對不對,望大俠指點!
摘自 踏雪無痕
vc中定時器並非多執行緒
vc中定時器並非多執行緒 vc 中timer很容易給人感覺是多執行緒的。其實不然,他是通過訊息觸發事件的。通過settimer函式設定定時器後,在規定時間內向訊息佇列中加入wm timer訊息來觸發事件。並且只有該訊息返回後才處理下個訊息。可以通過程式來驗證。bool bthreadend true...
vc中定時器並非多執行緒
vc 中timer很容易給人感覺是多執行緒的。其實不然,他是通過訊息觸發事件的。通過settimer函式設定定時器後,在規定時間內向訊息佇列中加入wm timer訊息來觸發事件。並且只有該訊息返回後才處理下個訊息。可以通過程式來驗證。bool bthreadend true uint threadp...
定時器和多執行緒
向原作者致敬!1 軟體定時器 很多同學在工程中喜歡使用軟體定時器,因為其使用簡單,僅需設定乙個時長和其ontime事件即可使用。確實,軟體定時器在某些持續性不強的重複性工作中效率還是不錯的,但是也有著很大的缺點。缺點1,速度 軟體定時器的精度比較低,這是由windows不實時的特性所決定的,在xp下...