關於linux中的延時函式

2021-06-05 18:54:50 字數 1205 閱讀 8294

應用程式:

#include

usleep(n) //n微秒

sleep(n)//n毫秒

sleep(n)//n秒

驅動程式:

#include

mdelay(n) //milliseconds 其實現

#ifdef notdef

#define mdelay(n) (\

)#else

#define mdelay(n) (\

(__builtin_constant_p(n) && (n)<=max_udelay_ms) ? udelay((n)*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 哦。

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

關於linux中的延時函式

應用程式 include sleep n n秒 驅動程式 include mdelay n milliseconds 其實現 ifdef notdef define mdelay n else define mdelay n builtin constant p n n max udelay ms ...

關於linux中的延時函式

應用程式 include usleep n n微秒 sleep n n毫秒 sleep n n秒 驅動程式 include mdelay n milliseconds 其實現 ifdef notdef define mdelay n else define mdelay n builtin cons...

Linux延時函式

每乙個平台不太一樣,最好自己定義一套跨平台的巨集進行控制。dos sleep 1 停留1秒 delay 100 停留100毫秒 windows sleep 100 停留100毫秒 linux sleep 1 停留1秒 usleep 1000 停留1毫秒 每乙個平台不太一樣,最好自己定義一套跨平台的巨...