應用程式:
#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毫秒 每乙個平台不太一樣,最好自己定義一套跨平台的巨...