如何并行运行计时器任务?

时间:2014-01-30 08:00:57

标签: c multithreading pthreads handler

void main()
{
  uint8 data;
  HANDLE h1,h2,h3;
  double Task2ms_Raster, Task10ms_Raster, Task100ms_Raster;
  XCP_FN_TYPE Xcp_Initialize();
  CreateSocket(); 
  h1=TimerTask(2,TASK1,&Task2ms_Raster);
  h2=TimerTask(10,TASK2,&Task10ms_Raster);
  h3=TimerTask(100,TASK3,&Task100ms_Raster);
  while(1)
  {
    data = recv(fd, recv_data, 512, 0);
    if (data == SOCKET_ERROR)
    {
      printf("recv failed with error %d\n", WSAGetLastError());
    }
    else
    {
      pChunkData = recv_data;
      chunkLen = sizeof(pChunkData);
      XCP_FN_TYPE XcpIp_RxCallback( (uint16) chunkLen, (uint8*) *pChunkData, (uint16) port);
      XCP_FN_TYPE XcpIp_OnTcpCxnClosed(port);
    }
  }
}

有一些函数调用如XCP_FN_TYPE Xcp_Initialize,CreateSocket(函数定义未显示)正常运行。但是如何运行

h1=TimerTask(2,TASK1,&Task2ms_Raster);
h2=TimerTask(10,TASK2,&Task10ms_Raster);
h3=TimerTask(100,TASK3,&Task100ms_Raster);

这些任务并行或在后台?

1 个答案:

答案 0 :(得分:1)

在单独的线程/进程中运行任务,并将它们与信号量或互斥锁同步。