Parameterübergabe bei creatthread();



  • Hallo.

    Ich bin erst 14 und hoffe die Frage ist nicht ganz so dumm.

    Ich habe folgende Aufgabenstellung.

    Mit einem Struct soll ich jedem der 3 threads, 2 Parameterübergeben. Seine Nummer + der creat Zeit. (Hab hier jetzt nur einen thread und die Structs bestehen ja nur aus den Variablen für Nummer und Erstellungszeit :))

    DWORD WINAPI ThreadFunc(void *data);
    int main()
    {
         LPVOID index;
         HANDLE thread1 = CreateThread(NULL, 0, ThreadFunc,NULL,0,NULL);
    
         system("PAUSE");
         return 0;
    }
    
    DWORD WINAPI ThreadFunc(void *data)
    {
          printf("Hello World\n");
          system("PAUSE");
    }
    

    Die creat Zeit bekomme ich ja mit einer forgegebenen Funktion (QueryPerformanceCounter) aber ich weiss nicht genau, wie ich die creat zeit dem struct übergebe und dieser ihn an die ThreadFunc weiter gibt.

    Ich hatte bisher nur mit "einfachen Funktionen" zu tun, aber hier bin ich wegen dem "CreateThread" überfordert. Kann mir jemand einen Tip geben, wie das auszusehen hat, oder bin ich nur zu doof?

    Danke



  • Nur mal ganz kurz hinge"rotzt", schematisch. Ich hoffe du kannst damit was anfangen.

    DWORD WINAPI ThreadFunc(void *data);
    int main()
    {
         LPVOID index;
         // irgendeine struct die du definieren musst
         threadinfo_t threadinfo;
         threadinfo.time = QueryPerformanceCounter ( /* dein Job */);
         threadinfo.num = i;
         HANDLE thread1 = CreateThread(NULL, 0, ThreadFunc,&threadinfo,0,NULL);
    
         system("PAUSE");
         return 0;
    }
    
    DWORD WINAPI ThreadFunc(void *data)
    {
          threadinfo_t *info = data;
          printf ("%d", info->num);
          printf("Hello World\n");
          system("PAUSE");
    }
    

    Edit: Nachtrag: Du musst aufpassen, dass die lokale(n) Variable(n) threadinfo in main() nicht irgendwie zerstört wird (weil du z.B. den Scope verlässt). Im zweifelsfall irgendwie dauerhaft allozieren (malloc() oder halt ein WinAPI-Äquivalent).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten