Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Metodo per creare nuovi thread... HELP... :-S
Forum - C/C++ - Metodo per creare nuovi thread... HELP... :-S

Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 14:30
Mercoledì, 19/07/2006
Ciao amici ho scritto un programma:

Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2.  
  3. using namespace std;
  4.  
  5. // Thread.
  6. HANDLE Thrd;
  7. // Variabili Thread.
  8. DWORD dwThrdId, dwThrdPrm;
  9.  
  10. // Crea un nuovo Thread.
  11. void createThread(void* method())
  12. {
  13.     Thrd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) &method, &dwThrdPrm, 0, &dwThrdId);
  14. }



void createThread(void* method()) serve per
creare un nuovo Thread in base al metodo passato
come parametro...
Il programma è corretto?
Dato un metodo come posso far partire un nuovo
Thread tramite il programma scritto di sopra??

Grazie 1000..


1 + 1 = 10
PM Quote
Avatar
mar (Normal User)
Rookie


Messaggi: 28
Iscritto: 29/06/2006

Segnala al moderatore
Postato alle 20:20
Mercoledì, 19/07/2006
Ciao,
stando alla documentazione microsoft il prototipo della ThreadProc dovrebbe essere il seguente:
Codice sorgente - presumibilmente Plain Text

  1. Codice sorgente - presumibilmente Plain Text

  2. DWORD ThreadProc(
  3.   LPVOID lpParameter
  4. );



Poi ovviamente se ne utilizzi uno diverso il compilatore non dovrebbe segnalare l'errore.
Quindi riadattando il tuo codice:
Codice sorgente - presumibilmente C++

  1. [CODE]
  2. #include<windows.h>
  3.  
  4. // Thread.
  5. HANDLE Thrd;
  6. // Variabili Thread.
  7. DWORD dwThrdId;
  8.  
  9. // Crea un nuovo Thread.
  10. bool Create_Thread(DWORD (*method)(LPVOID lpParameter))
  11. {
  12. Thrd = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)method,0,0,&dwThrdId);
  13. if(Thrd) return true;
  14. else return false;
  15. }
  16.  
  17. DWORD Proc(LPVOID lpParameter){
  18.       // Qui inserisci istruzioni thread
  19.       MessageBox(0,"CIAO MONDO","INFORMATION",MB_OK);
  20.           return true;
  21. }
  22.  
  23. int __stdcall WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
  24.  
  25. if(!Create_Thread(Proc))
  26. MessageBox(0,"THREAD NON CREATO","ERROR",MB_ICONERROR);
  27.  
  28. system("pause>nul");
  29. return 0;
  30. }
  31. [/CODE]



Questo potrebbe essere un esempio poi se vuoi cambiare valore di ritorno e parametri della ThreadProc basta riadattare la dichiarazione del puntatore a funzione method.

Ciao.

PM Quote
Avatar
mar (Normal User)
Rookie


Messaggi: 28
Iscritto: 29/06/2006

Segnala al moderatore
Postato alle 20:24
Mercoledì, 19/07/2006
Perchè non funzionano i
Codice sorgente - presumibilmente Plain Text

  1. Codice sorgente - presumibilmente Plain Text



?

PM Quote
Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 20:48
Mercoledì, 19/07/2006
mi sa che devi farli in minuscolo...
a quanto ne so io il forum è CaseSensitive.


1 + 1 = 10
PM Quote