我如何使用轮询功能避免多线程

时间:2018-12-31 18:25:10

标签: linux unix

我正在尝试在超时后调用函数,并且计时器应仅在一个线程中使用轮询函数在后台运行

我使用两个线程解决了问题,但我想使用一个线程完成

void *Start_Timer(void *)
{
    while(1)
    {
    struct pollfd fds[1];
    int ret,timeout=10;
    fds[0].fd=-1;
    fds[0].events=0;
    ret=poll(fds,1,timeout);
    if(ret==0)
    {
      callMe();
    }
    }

}
int main()
{
   pthread_t thread;
   pthread_create(&thread, NULL, &Start_Timer, NULL);
   int i=0;
   while(1)
   {
    long long  int time;
    int id;
     struct timeval start;
     cout<<"Enter timer in seconds and id \n";
     cin>>time>>id;
     gettimeofday(&start, NULL);
     time=time*1000;
     Details[i].timer=time;
     Details[i].id=id;
     i++;
     size=i;
   }

}

0 个答案:

没有答案