0.5微秒的延遲相當(dāng)于納秒級(jí)的了,內(nèi)核空間有提供納秒級(jí)的延遲
為汕城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及汕城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、汕城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
#include linux/delay.h
ndelay(int n); 延時(shí)n納秒
但是時(shí)間應(yīng)該是不準(zhǔn)的。
較為準(zhǔn)確的延遲可以用select,但也只是us級(jí)的。
struct timeval tv;
tv.tv_sec=0;
tv.tv_usec=iUsec; //微秒
select(0,NULL,NULL,NULL,tv);
使用要帶上頭文件:
#include windows.h
Sleep函數(shù):
功 能: 執(zhí)行掛起一段時(shí)間
用 法: unsigned sleep(unsigned seconds);
注意:
1.在VC中使用帶上頭文件#include windows.h,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include unistd.h
2.在VC中,Sleep中的第一個(gè)英文字符為大寫的"S" ,在linux下不要大寫,在標(biāo)準(zhǔn)C中是sleep, 不要大寫,簡(jiǎn)單的說VC用Sleep, 別的一律使用sleep。
3.在VC中,Sleep()里面的單位,是以毫秒為單位,所以如果想讓函數(shù)滯留1秒的話,應(yīng)該是Sleep(1000); 在Linux下,sleep()里面的單位是秒,而不是毫秒。
示例:
#includestdio.h
#include windows.h
int main()
{
int a=100;?
Sleep(3000);
printf("%d",a);
return 0;
}
usleep函數(shù):
功能: usleep功能把進(jìn)程掛起一段時(shí)間, 單位是微秒us(百萬分之一秒)。
語法: void usleep(int micro_seconds);
返回值: 無
注意:這個(gè)函數(shù)不能工作在 Windows 操作系統(tǒng)中。
usleep() 與sleep()類似,用于延遲掛起進(jìn)程。進(jìn)程被掛起放到reday queue。只是一般情況下,延遲時(shí)間數(shù)量級(jí)是秒的時(shí)候,盡可能使用sleep()函數(shù)。且此函數(shù)已被廢除,可使用nanosleep?!?/p>
如果延遲時(shí)間為幾十毫秒,或者更小,盡可能使用usleep()函數(shù)。這樣才能最佳的利用CPU時(shí)間。
delay函數(shù):
功 能: 將程序的執(zhí)行暫停一段時(shí)間,單位是毫秒ms(千分之一秒)
用 法: void delay(unsigned milliseconds);
示例:
#includedos.h
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
delay()是循環(huán)等待,該進(jìn)程還在運(yùn)行,占用處理器。
sleep()不同,它會(huì)被掛起,把處理器讓給其他的進(jìn)程。
你是指延遲函數(shù)還是定時(shí)調(diào)用,比如到11:12:13秒執(zhí)行某個(gè)函數(shù)?
如果是延時(shí)函數(shù)用
usleep(usec);?//?微妙
sleep(sec);????//?秒
如果是定時(shí)執(zhí)行的話,你只能開個(gè)線程或while,每隔1s判斷下當(dāng)前系統(tǒng)時(shí)間,
struct???tm?????*ptm;?
long???????ts;?
int?????????y,m,d,h,n,s;?
ts???=???time(NULL);?
ptm???=???localtime(ts);?
y???=???ptm-?tm_year+1900;?????//年?
m???=???ptm-?tm_mon+1;?????????????//月?
d???=???ptm-?tm_mday;???????????????//日?
h???=???ptm-?tm_hour;???????????????//時(shí)?
n???=???ptm-?tm_min;?????????????????//分?
s???=???ptm-?tm_sec;?????????????????//秒
照著上面的格式組成字符串進(jìn)行判斷,到點(diǎn)了就執(zhí)行就可以了
延遲函數(shù),一般建議調(diào)用系統(tǒng)函數(shù)。不建議循環(huán)。
特別是多任務(wù)操作系統(tǒng),循環(huán)會(huì)消耗系統(tǒng)資源。
如果是Dos,indows,linux系統(tǒng)建立調(diào)用 Sleep()函數(shù)。
其他系統(tǒng),請(qǐng)自行查找。