Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDWORD WINAPI WaitFunction(LPVOID lParam) { MSG msg; HANDLE *hEvent = (HANDLE*)lParam; //To alert the main thread the end of the process PeekMessage(&msg,0,0,0,PM_NOREMOVE); //To create the message queue SetEvent(*hEvent); while (GetMessage(&msg, NULL, 0, 0)) //Wait for message { int type = HIWORD(msg.wParam); int which = LOWORD(msg.wParam); switch(which) { case MT_STRETCH_HIST: if(type==dtUINT8) {Intensity::_StretchHistogramMT ((LPVOID)msg.lParam);break;} if(type==dtUINT16){Intensity::_StretchHistogramMT((LPVOID)msg.lParam);break;} ... ...
bool MultiThreading::Start(int which,const char *szType,int nbThread) { unsigned int type=100; if(strcmp(szType,"unsigned char")==0) type=dtUINT8; if(strcmp(szType,"unsigned short int")==0) type=dtUINT16; if(strcmp(szType,"unsigned int")==0) type=dtUINT32; if(strcmp(szType,"int")==0) type=dtINT32; if(strcmp(szType,"float")==0) type=dtFLOAT; if(strcmp(szType,"double")==0) type=dtDOUBLE; if(strcmp(szType,"unsigned char float")==0) type=dtDOUBLE+1; if(strcmp(szType,"unsigned char double")==0) type=dtDOUBLE+2; if(type==100)return 0; for(int i=0;i<nbThread;i++) PostThreadMessage(idThread[i],0,MAKELONG(which,type),(LPARAM)Param); WaitForMultipleObjects(nbThread,hEvents,1,INFINITE); return 1; }