當前位置:首頁 » 操作系統 » linux線程sleep

linux線程sleep

發布時間: 2022-02-26 07:41:31

『壹』 求高手,linux系統幾乎所有進程處於sleep狀態是否正常

你的sleep進程基本上都是java相關的。可能是由於某個進程長期得不到響應,比如nfs造成的IO中斷,應用一直在等待響應,等的都睡著了。。所以也看不到報錯,呵呵。具體的也看不出到底是哪個進程引起的。建議就是重啟相關的java應用。或者重啟機器。

進程為什麼會被置於uninterruptible sleep狀態呢?處於uninterruptible sleep狀態的進程通常是在等待IO,比如磁碟IO,網路IO,其他外設IO,如果進程正在等待的IO在較長的時間內都沒有響應,那麼就很會不幸地被 ps看到了,同時也就意味著很有可能有IO出了問題,可能是外設本身出了故障,也可能是比如掛載的遠程文件系統已經不可訪問了,我以前遇到的問題就是由 down掉的NFS伺服器引起的。
正是因為得不到IO的相應,進程才進入了uninterruptible sleep狀態,所以要想使進程從uninterruptible sleep狀態恢復,就得使進程等待的IO恢復,比如如果是因為從遠程掛載的NFS卷不可訪問導致進程進入uninterruptible sleep狀態的,那麼可以通過恢復該NFS卷的連接來使進程的IO請求得到滿足,除此之外,要想幹掉處在D狀態進程就只能重啟整個Linux系統了。

『貳』 linux下sleep()最大掛起多少秒

unsigned int 能夠表達的最大數字吧
32位系統下,也就是2的32次方減1

『叄』 linux c sleep 支持多線程嗎

sleep僅僅會停止當前線程的執行一段時間,不會干擾到其他的線程。當然是支持多線程的。

『肆』 請教Linux下的sleep函數

函數名: sleep、usleep
功 能: 執行掛起一段時間
頭文件: #include <unistd.h>
區 別: unsigned sleep (unsigned int seconds);//n秒
int usleep (useconds_t usec);//n微秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#include<stdio.h>
#include<unistd.h>
int main()
{
int sec = 0,
usec = 0;
while(1)
{
printf("sec = %d \n",++sec);
sleep(1);
printf("usec = %d \n",++usec);
usleep(1000000);
}
return 0;
}

Linux下的sleep函數原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的Sleep()函數是以毫秒為單位的,sleep(1000);才是休眠1秒。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數:void usleep(unsigned long usec)。
Linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鍾的話,可以這么用 delay(250)。

『伍』 linux中如何實現sleep(0)的功能

linux下的sleep(0),有些時候被實現為下面這樣:

unsigned int sleep (unsigned int seconds)
{
……
/* This is not necessary but some buggy programs depend on this. */
if (seconds == 0)
return 0;
……
}

如果你的程序對實時性要求不那麼高,可以使用usleep(1),不然就只能用信號或者其他事件機制了。

『陸』 Linux線程:如下程序在加上sleep後為什麼不能輸出了

這個程序同一時間應該只有一個線程在跑。你加的兩個sleep的時間是一樣的,可能有一個線程怎麼都醒不過來,你可以把時間換一下。比如一個是2 一個是1

『柒』 在linux下,想用sleep函數實現延時五秒,應該怎麼設參數

使用許可權 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
說明 : sleep 可以用來將目前動作延遲一段時間
參數說明 :
--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,後面可接 s、m、h 或 d
其中 s 為秒,m 為 分鍾,h 為小時,d 為日數
例子 :
顯示目前時間後延遲 1 分鍾,之後再次顯示時間 :
date;sleep 1m;date

這個命令更多應用於shell腳本編程里和程序里

如下面的一段程序:

應用程序:

復制代碼
代碼如下:

#include <syswait.h>
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n秒
驅動程序:
#include <linux/delay.h>
mdelay(n) //milliseconds 其實現
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
調用asm/delay.h的udelay,udelay應該是納秒級的延時
Dos:
sleep(1); //停留1秒
delay(100); //停留100毫秒
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1秒
usleep(1000); //停留1毫秒

每一個平台不太一樣,最好自己定義一套跨平台的宏進行控制

秒還是微秒?關於延時函數sleep()
因為要寫一段代碼,需要用到sleep()函數,在我印象中,sleep(10)好像是休眠10微秒,結果卻是休眠了10秒(在Linux下)。覺得很奇怪,因為頭兒也記得好像是微秒為單位的。所以就查了一下。

原來linux下的sleep函數原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的sleep()函數是以微秒為單位的,sleep(1000);才是休眠1秒。原來如此啊。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數:void usleep(unsigned long usec);當然,使用的時候別忘記#include <system.h>哦。

另外值得一提的是,linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鍾的話,可以這么用 delay(250);

『捌』 linux 多線程問題sleep

加了sleep讓命令讓輸出有一個運行的緩沖時間,如果沒有sleep,那麼下一條命令的執行快於輸出,那麼估計就得不到輸出的顯示了。

『玖』 嵌入式 linux下sleep函數到底是線程休眠還是進程休眠

Linux實際上沒有真正線程的概念,pthread庫中的「線程」被許多人稱作「輕量級的進程",內核負責調度所有的進程,且在內核眼裡被我們看做線程的東西與普通進程是無差別的。
sleep函數休眠的是當前進程,而pthread庫中的「線程」事實上就是進程,因此該函數的作用域就是這個「線程」。

『拾』 如何讓一個Linux多線程睡眠

可以使用sleep()方法。

sleep()方法擁有一個參數,它控制睡眠的長短,以毫秒計算。sleep()方法會拋出InterruptedException,所以一定在try-catch塊裡面使用它。
示例代碼如下:

{
inti=0;

publicstaticvoidmain(String[]args){
Aa1=newA();
Aa2=newA();
a1.run();
a2.run();
}

publicvoidrun(){
while(++i<=100){
System.out.println(i);
try{
Thread.sleep(50);
}catch(Exceptione){
e.printStackTrace();
}
}
}
}

注意,sleep()方法並不保證線程醒來後進入運行,只能保證它進入就緒狀態。

熱點內容
我的世界好玩地鐵伺服器 發布:2024-11-15 17:48:54 瀏覽:359
1710小游戲伺服器ip 發布:2024-11-15 17:48:01 瀏覽:663
狂三腳本 發布:2024-11-15 17:31:38 瀏覽:872
附近存儲櫃 發布:2024-11-15 17:15:17 瀏覽:452
王選解決漢字存儲問題 發布:2024-11-15 17:15:11 瀏覽:660
球球大作戰安卓為什麼不能玩哪些模式 發布:2024-11-15 17:14:26 瀏覽:996
存儲器講課 發布:2024-11-15 17:14:12 瀏覽:196
安卓充電頭怎麼稱呼 發布:2024-11-15 17:11:17 瀏覽:446
獵人手游源碼 發布:2024-11-15 17:09:28 瀏覽:433
qt資源圖片編譯 發布:2024-11-15 16:59:26 瀏覽:666