linux下多个定时器的实现(C语言),麻烦高手指点哈嘛(急)

这样的:我想做一个进程,里面的一些函数会实现一些功能,在需要定时的时候通过进程间的通信机制发送一个消息开启定时器进程,比如说要需要3秒。3秒后定时器进程返回一个消息给主进... 这样的:我想做一个进程,里面的一些函数会实现一些功能,在需要定时的时候通过进程间的通信机制发送一个消息开启定时器进程,比如说要需要3秒。3秒后定时器进程返回一个消息给主进程,当然在这个过程中主进程也可以发一个消息去终止定时器。在这个定时器进程中需要几个这样的定时器,定的时间不同
不知道我表述清楚没,急。。。。麻烦高手说一下嘛,感激感激!
展开
 我来答
捡到的幸福
2011-02-24 · TA获得超过1282个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:348万
展开全部
给你两个函数参考
omsTimer函数是处理定时事件,void(*handle)(union sigval v)参数就是处理事件的函数指针。
int omsSetTimer(timer_t *tId,int value,int interval)就是设置定时器。
按你说的,如兄孙慧果要同时起多个定时器,需要定义一个数羡答组timer_t tm[n];int it[n];tm就是定时器结构,it用来记录对应的定时器是否已经使用,使用中的就是1,没用的就是0;
主进程消息来了就从it找一个没用的来omsSetTimer,如果收到终止消息,那omsSetTimer 定时时间为0
int omsTimer(timer_t *tId,int iValue,int iSeconds ,void(*handle)(union sigval v),void * param)
{
struct sigevent se;
struct itimerspec ts;
memset (&se, 0, sizeof (se));
se.sigev_notify = SIGEV_THREAD;
se.sigev_notify_function = handle;
se.sigev_value.sival_ptr = param;
if (timer_create (CLOCK_REALTIME, &se, tId) < 0)
{
return -1;
}
ts.it_value.tv_sec = iValue;
// ts.it_value.tv_sec =3;
//ts.it_value.tv_nsec = (long)(iValue % 1000) * (1000000L);
ts.it_value.tv_nsec = 0;
ts.it_interval.tv_sec = iSeconds;
//ts.it_interval.tv_nsec = (long)(iSeconds % 1000) * (1000000L);
ts.it_interval.tv_nsec = 0;
if (timer_settime(*tId, TIMER_ABSTIME, &ts, NULL) < 0)
{
return -1;
}
return 0;
}
int omsSetTimer(timer_t *tId,int value,int interval)
{
struct itimerspec ts;
ts.it_value.tv_sec =value;
/凯吵/ts.it_value.tv_nsec = (long)(value % 1000) * (1000000L);
ts.it_value.tv_nsec = 0;
ts.it_interval.tv_sec = interval;
//ts.it_interval.tv_nsec = (long)(interval % 1000) * (1000000L);
ts.it_interval.tv_nsec = 0;
if (timer_settime(*tId, TIMER_ABSTIME, &ts, NULL) < 0)
{
return -1;
}
return 0;
}
更多追问追答
追问
我在网上没有搜到omsSetTimer函数啊,这个函数具体是怎样的呢?
追答
整个函数的实现不是贴出来给你了吗?
luolanlover
2011-03-09
知道答主
回答量:27
采纳率:0%
帮助的人:24.8万
展开全部
用libevent的定时器很timer容易很简单的就把这个实现了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式