2014-01-30 5 views
0
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); 

이러한 작업을 병렬 또는 백그라운드에서?

+2

먼저 들여 쓰기 코드 –

답변

1

별도의 스레드/프로세스에서 작업을 실행하고 세마포 또는 뮤텍스와 동기화합니다.

+0

위의 문제에 대한 예를 들어 주시겠습니까? (나는 평소에 TimerTask를 실행하고 싶습니다.) ?? – user3252048

관련 문제