《linux下定时器的使用2.pdf》由会员分享,可在线阅读,更多相关《linux下定时器的使用2.pdf(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、采用新线程派驻的通知方式:#include#include#include#include#include#include#define CLOCKID CLOCK_REALTIMEvoidvoid timer_thread(unionunion sigval v)printfprintf(timer_thread function!%dn,v.sival_int);intint main()/XXX int timer_create(clockid_t clockid,struct sigevent*evp,timer_t*timerid);/clockid-值:CLOCK_REALTIME
2、,CLOCK_MONOTONIC,CLOCK_PROCESS_CPUTIME_ID,CLOCK_THREAD_CPUTIME_ID/evp-存放环境值的地址,结构成员说明了定时器到期的通知方式和处理方式等/timerid-定时器标识符timer_t timerid;structstruct sigevent evp;memsetmemset(&evp,0,sizeofsizeof(structstruct sigevent);/清零初始化evp.sigev_value.sival_int=111;/也是标识定时器的,这和timerid 有什么区别?回调函数可以获得evp.sigev_notif
3、y=SIGEV_THREAD;/线程通知的方式,派驻新线程evp.sigev_notify_function=timer_thread;/线程函数地址ifif(timer_create(CLOCKID,&evp,&timerid)=-1)perrorperror(fail to timer_create);exitexit(-1);/XXX int timer_settime(timer_t timerid,int flags,const struct itimerspec*new_value,struct itimerspec*old_value);/timerid-定时器标识/flags-
4、0 表示相对时间,1 表示绝对时间/new_value-定时器的新初始值和间隔,如下面的it/old_value-取值通常为 0,即第四个参数常为NULL,若不为 NULL,则返回定时器的前一个值/第一次间隔 it.it_value 这么长,以后每次都是 it.it_interval 这么长,就是说it.it_value 变 0 的时候会装载 it.it_interval 的值structstruct itimerspec it;it.it_interval.tv_sec=1;it.it_interval.tv_nsec=0;it.it_value.tv_sec=1;it.it_value.tv_nsec=0;ifif(timer_settime(timerid,0,&it,NULL)=-1)perrorperror(fail to timer_settime);exitexit(-1);pause();returnreturn 0;/*int timer_gettime(timer_t timerid,struct itimerspec*curr_value);*获取 timerid 指定的定时器的值,填入 curr_value*/