当前位置: 技术问答>linux和unix
多定时器问题
来源: 互联网 发布时间:2015-08-11
本文导语: 单定时器好办。 多定时器怎么办?系统支持吗? 本来可以用一个时间间隔小的定时器。来模拟处理多个定时器的样子。 但是,现在要用在多线程里。 这样就会发生数据同步更新的问题。 所以,我想在我的每个线程...
单定时器好办。
多定时器怎么办?系统支持吗?
本来可以用一个时间间隔小的定时器。来模拟处理多个定时器的样子。
但是,现在要用在多线程里。
这样就会发生数据同步更新的问题。
所以,我想在我的每个线程中都用定时器。来处理。
怎么做?
多定时器怎么办?系统支持吗?
本来可以用一个时间间隔小的定时器。来模拟处理多个定时器的样子。
但是,现在要用在多线程里。
这样就会发生数据同步更新的问题。
所以,我想在我的每个线程中都用定时器。来处理。
怎么做?
|
多定时器的代码:
static void TimeCount(int signo)
{
int i;
++DelayCount;
++RecvDLECount; //在不同的线程中使用不同的变量,在使用之前,将变量附为零。
}
//该函数在main的初始化时使用,用来设定时间间隔
void TimeStart(int sec,int usec,int i_sec,int i_usec)
{
struct sigaction TimeSignal;
struct itimerval ivalue,ovalue;
TimeSignal.sa_handler = TimeCount;
sigemptyset(&TimeSignal.sa_mask);
TimeSignal.sa_flags = 0;
sigaction(SIGALRM,&TimeSignal,NULL);
ivalue.it_interval.tv_sec = sec;
ivalue.it_interval.tv_usec = usec;
ivalue.it_value.tv_sec = i_sec;
ivalue.it_value.tv_usec = i_usec;
setitimer(ITIMER_REAL,&ivalue,&ovalue);
}
static void TimeCount(int signo)
{
int i;
++DelayCount;
++RecvDLECount; //在不同的线程中使用不同的变量,在使用之前,将变量附为零。
}
//该函数在main的初始化时使用,用来设定时间间隔
void TimeStart(int sec,int usec,int i_sec,int i_usec)
{
struct sigaction TimeSignal;
struct itimerval ivalue,ovalue;
TimeSignal.sa_handler = TimeCount;
sigemptyset(&TimeSignal.sa_mask);
TimeSignal.sa_flags = 0;
sigaction(SIGALRM,&TimeSignal,NULL);
ivalue.it_interval.tv_sec = sec;
ivalue.it_interval.tv_usec = usec;
ivalue.it_value.tv_sec = i_sec;
ivalue.it_value.tv_usec = i_usec;
setitimer(ITIMER_REAL,&ivalue,&ovalue);
}
|
可以用pthread_cond_timedwait