für einen Threat mehrere Parameter übergeben



  • wenn man einen Threat starten will kann man ja Parameter übergeben, das sieht dann ja z.b. so aus:

    My_Thread_Collect_Data_1(int para_1){}
    
    My_Thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)My_Thread_Collect_Data_1, (void *)para_1, 0, &ID_My_Thread);
    

    aber wie rufe ich diese Procedur korrekt als Threat auf:

    My_Thread_Collect_Data_2(int para_1, int para_2, char *daten_1, char daten_2[256]){}
    

    ich komm leider nicht dahinter, hat hier einer den Plan wie das geht?



  • Pack alle nötigen Parameter in eine struct und übergib dann einen Zeiger darauf:

    struct thread_data
    {
      int para_1;
      int para_2;
      char* daten_1;
      char daten_2[256];
    }
    
    int Collect(void* param)
    {
      thread_data* data=static_cast<thread_data*>(param);
    
      if(data->para_1>0)
        ...
    }
    
    ...
    thread_data thdata={0x0815,4711,"Hallo","Welt"};
    My_Thread = CreateThread(NULL, 0, Collect, &thdata, 0, &ID);
    ...
    


  • Mit mehreren Startparametern geht das nicht. Du musst ne Struktur verwenden und diese dem Thread übergeben.

    struct CollectData
    {
        int para_1
        int para_2
        char *daten_1
        char daten_2[256]
    }
    
    CollectData Data;
    
    // Die Members der CollectData Struktur füllen...
    
    CreateThread(NULL, 0, My_Thread_Collect_Data_1, (void *)Data, 0, &ID_My_Thread);
    
    // Threadroutine
    My_Thread_Collect_Data_1( LPVOID data )
    {
        CollectData Data = data;
    }
    


  • Und es heißt "Thread".



  • obwohl Threads auch eine Bedrohung sein können ^^ (sry den konnt ich mir net verkneifen)


Anmelden zum Antworten