📄 main.cpp
字号:
#include <iostream>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h>
int count = 0;
int in=0;
int flag[5]={0};
using std::cout;
void timer_handler (int);
void sighand(int);
int func1();
int func2();
int func3();
int func4();
int func5();
void maan();
int selector(int);
int (*arptr[5])()={&func1,&func2,&func3,&func4,&func5};
int main()
{
maan();
return 0;
}
int func1()
{
cout<<"M FUN 1";
}
int func2()
{
cout<<"M FUN 2";
}
int func3()
{
cout<<"M FUN 3";
}
int func4()
{
cout<<"M FUN 4";
}
int func5()
{
cout<<"M FUN 5";
}
int selector(int index)
{
if(flag[index]==0)
{
return 1;
}
}
void sighand(int signum)
{
cout<<"flag"<<flag[in];
flag[in]=0;
in++;
flag[in]=1;
cout<<"flag"<<flag[in];
}
void timer_handler (int signum)
{
printf ("timer expired %d times\n", ++count);
if(in==5)
{
in=0;
}
flag[in]=1;
if(count%5==0)
{
for(int k=0;k<5;k++)
{
if(flag[k]==1)
{
arptr[k]();
}
}
int sel=selector(in);
flag[in]=0;
in++;
flag[in]=1;
}
}
void maan()
{
struct sigaction sa;
struct itimerval timer;
/* Install timer_handler as the signal handler for SIGVTALRM. */
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &timer_handler;
sigaction (SIGVTALRM, &sa, NULL);
/* Configure the timer to expire after 250 msec... */
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 250000;
/* ... and every 250 msec after that. */
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 250000;
/* Start a virtual timer. It counts down whenever this process is
executing. */
setitimer (ITIMER_VIRTUAL, &timer, NULL);
while(1);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -