vc中定時器並非多執行緒

2021-07-13 10:47:13 字數 574 閱讀 8885

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下...