你是指延遲函數還是定時調用,比如到11:12:13秒執(zhí)行某個函數?
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、成都網站制作、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的尼瑪網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
如果是延時函數用
usleep(usec);?//?微妙
sleep(sec);????//?秒
如果是定時執(zhí)行的話,你只能開個線程或while,每隔1s判斷下當前系統(tǒng)時間,
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;???????????????//時?
n???=???ptm-?tm_min;?????????????????//分?
s???=???ptm-?tm_sec;?????????????????//秒
照著上面的格式組成字符串進行判斷,到點了就執(zhí)行就可以了
實際上,windows和Linux獲得時間的機制是不一樣的,不是靠代碼就能夠完成。想在windows下實現gettimeofday,其實就是windows取時間的方式,還有Linux提供了漸進修改時間的接口adjtime(),而windows就沒有。
精度達到微妙是不可能的,因為計算機本身的時間片10-15ms左右,不管是Linux和windows,因此不可能達到那個精度。
另外系統(tǒng)時間和RTC時間也是不同的概念,當然讀RTC時間成本很高,但是準確,可以用匯編或具體的庫來讀,但是只是一瞬間的參考,按長遠來說也是很不穩(wěn)定的,做多10-15ms精度,當然,你可以自己用代碼時間一個時間估計的過程,用算法來彌補,給出誤差分析,但這個是數學了。
可以調用函數
settimeofday
int?settimeofday(const?struct?timeval?*tv?,?const?struct?timezone?*tz);
struct?timeval?{
time_t?tv_sec;?????/*?seconds???since???Jan.???1,???1970??*/
suseconds_t?tv_usec;????/*?微妙?*/?
};
也可以用system調用系統(tǒng)命令date
可以用usleep函數
單位是微妙
比如
usleep(1000);
這個是暫停一毫秒。
usleep(10);
暫停10微秒