Ubuntu C++ Thread Sleep
#include
#include <unistd.h>
using namespace std;
int main() {
cout << “nitrate”;
cout << flush;
usleep(1000000);
cout << “firtilizers”;
return 0;
}
usleep函數能把線程掛起一段時間, 單位是微秒(千分之一毫秒)。本函數可暫時使程序停止執行。參數 micro_seconds 為要暫停的微秒數(us)。
這個函數不能工作在windows 操作系統中。用在Linux的測試環境下面
見:usleep() 與sleep()類似,用于延遲掛起進程。進程被掛起放到ready queue。
是一般情況下,延遲時間數量級是秒的時候,盡可能使用sleep()函數。且此函數已被廢除,可使用nanosleep。如果延遲時間為幾十毫秒(1ms = 1000us),或者更小,盡可能使用usleep()函數。這樣才能最佳的利用CPU時間
該usleep()功能將導致調用線程暫停執行直到數微秒的實時參數指定了useconds或信號傳遞到調用線程,其作用是調用一個信號的捕獲功能或終止進程。暫停的時間可能比所要求的系統的其他活動的調度要長。
該useconds參數必須小于1000000。如果useconds值是0,則調用沒有影響。
如果一個sigalrm信號生成調用進程的執行過程中,如果usleep() sigalrm信號被忽略或無法交貨,這是未指定是否usleep()返回時的sigalrm預定的信號。如果信號是被封鎖,也未指定是否后尚未usleep()返回或是丟棄。
如果一個sigalrm信號生成調用進程執行usleep()期間,除了由于對alarm()事先打電話,如果sigalrm信號不被忽略或無法交貨,它是不確定的,是否有其他信號比造成任何影響usleep()返回。
如果信號捕捉功能的中斷usleep()檢查或變化的時間sigalrm將產生,與sigalrm信號相關的動作,或是否sigalrm信號被阻止從交貨,結果是不確定的。
如果信號捕捉功能的中斷usleep()和電話siglongjmp()或longjmp()恢復環境保存到usleep()呼叫之前,行動與sigalrm信號和時間,sigalrm信號將產生未指定。它還未指定是否sigalrm信號被阻斷,除非進程的信號屏蔽恢復作為環境的一部分。
實現可能限制定時器值的粒度。對于每個時間間隔定時器,如果請求的定時器值需要比實現支持細粒度的,實際的定時器的值將舍入為下一個支持的價值。
usleep()和任何以下之間的相互作用是不確定的:
總結
以上是生活随笔為你收集整理的Ubuntu C++ Thread Sleep的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 售价 168 元,苹果中国商城上架 BO
- 下一篇: c/c++ 字符串分割