『壹』 在c++中如何讓程序等待一秒後才運行下面的語句
使用線程睡眠:Sleep(1000)
線程可以調用Sleep函數使其在指定時間內不被調度:
VOID Sleep(DWORD dwMilliseconds);
Sleep調用會掛起當前線程,dwMilliseconds毫秒之後再將其恢復為可調度的。Sleep函數有以下幾點值得注意:Sleep調用會導致當前線程放棄其剩餘的時間片
Sleep調用時,系統掛起當前線程的時長大約是dwMilliseconds毫秒——比如,當dwMilliseconds設置為100時,在大多數情況下,當前線程睡眠的時長並不會是100ms,可能是幾百毫秒、幾秒、幾分鍾甚至更長。因為Windows並不是一個實時系統,所以dwMilliseconds只是一個建議值
為dwMilliseconds傳遞INFINITE會使當前線程永遠睡眠,這通常沒什麼用處
為dwMilliseconds傳遞0時,當前線程會放棄剩餘的時間片,系統會嘗試調度優先順序等於或高於當前線程 的可調度線程,如果沒有找到這樣的線程,系統將馬上重新調度調用Sleep的線程
切換:SwitchToThread
當前線程可以調用SwitchToThread強迫操作系統調度另外的可調度線程(如果存在):
BOOL SwitchToThread();當前線程調用SwitchToThread時,系統會檢查是否存在可調度的線程處於「飢餓」狀態,如果沒有找到,SwitchToThread立刻返回,系統繼續執行當前線程,否則系統將暫停當前線程並調度處於「飢餓」狀態的線程(無論該線程的優先順序大小),「飢餓」線程的調度時間大約是一個時間片,然後系統調度將恢復正常。當線程A需要獲得某資源,而該資源又被另一優先順序較低的線程B佔用時,A可以調用SwitchToThread迫使操作系統調度低先級的進程,以期待B釋放被佔用的資源。當沒有其它線程可調度時,SwitchToThread返回FALSE,否則返回一個非0值。SwitchToThread函數和Sleep(0)調用類似,不同之處在於SwitchToThread允許系統調度優先順序低於當前線程的可調度線程,但Sleep(0)只允許調度優先順序不低於當前線程的可調度線程。
『貳』 如何讓Qt 的程序等待一段時間
開啟一個局部的事件循環,讓其執行100ms後自己退出,似乎很不錯。寫來看看:
QEventLoop eventloop;
QTimer::singleShot(100, &eventloop, SLOT(quit()));
eventloop.exec();
創建事件循環
啟動定時器,讓其100ms後觸發事件循環的quit()槽
啟動事件循環
後面這種方法可以不影響其他線程的響應,又可以達到等待的目的。
『叄』 c++如何讓當前進程等待一秒繼續執行
使用Sleep(1000)即可,參考代碼如下:
#include <windows.h>
#include<stdio.h>
int main()
{
int a;
a=1000;
printf("你");
Sleep(a);/* VC 使用Sleep*/
printf("好"); /*輸出「你」和「好」之間會間隔一千毫秒,即間隔一秒,sleep()的單位為毫秒*/
return 0;
}
(3)如何讓程序等待一定時間後運行擴展閱讀:
用法
sleep()函數的調用需要一個時間作為參數,代表程序執行掛起的時間間隔。通常參數的單位是秒,但在一些更加精確的操作系統中能以毫秒甚至是微秒為單位。
Sleep函數的一般形式:
Sleep(unsigned long);
其中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000)
sleep()單位為秒,usleep()裡面的單位是微秒。
『肆』 vb中怎麼用timer控制項設置一個等待時間
以下程序利用Timer,使得程序等待1秒(1000毫秒)後繼續執行
OptionExplicit
PrivateSubCommand1_Click()
Cls'清屏
Timer1.Interval=1000'等待1000毫秒(1秒)
Timer1.Enabled=True'啟動定時器
DoWhileTimer1.Enabled'循環等待,直到定時器Timer1停止
DoEvents'等待期間防止窗體「凝滯」
Print"等待"'提示
Loop
Cls'清屏
Print"繼續執行"'提示:等待結束
EndSub
PrivateSubTimer1_Timer()
'定時到!停止定時器
Timer1.Enabled=False
EndSub