thread programmierung



  • steige gerade neu in c ein (habe aber schon andere sprachen gelernt). ich benutze den dev-c++ und möchte ein programm mit threads programmieren. aber mir fehlt die pthread.h datei. ich habe sie mir in den verscheidesten versionen heruntergeladen, aber bekomme kein thread-programm zum laufen. bekomme nur fehler. z.b. folgendes programm:
    #define _REENTRANT
    #include <pthread.h>

    #define SLEEP_TIME 10
    #define NUM_THREADS 5

    void *sleeping (void *);

    main (int argc, char *argv[])
    { int i;

    pthread_t tid[NUM_THREADS];

    for (i = 0; i < NUM_THREADS; i++)
    pthread_create (&tid[i], NULL, sleeping, (void 😉 SLEEP_TIME);
    for (i = 0; i < NUM_THREADS; i++)
    pthread_join (tid[i], NULL);
    printf ("main() reporting that all %d threads have terminated\n", i);
    }

    void *
    sleeping (void *sleep_time)
    {
    printf ("thread %d sleeping %d seconds ...\n", pthread_self (),
    (int) sleep_time);
    sleep ((int) sleep_time);
    printf ("\nthread %d awakening\n", pthread_self ());
    }

    habe ich vielleicht ein paar programmierfehler dabei oder eine falsche pthread.h datei? bedanke mich für jede hilfe!



  • Schön das du uns auch die Art des Fehler im Detail angegeben hast. 😃 😃



  • das sind so viele fehler, da kommt nochmal so viel text zusammen wie das programm lang ist! aber ich glaube das es an der pthread.h datei liegt. hat jemand da eine funktionierende für dev-c++? und wenn du willst kann ich dir die ganzen fehler auch nochmal aufschreiben!



  • Also dein Programm lässt sich bei mir ganz einfach compilieren und ausführen.
    Naja gut... Auf nem guten Linux zumindest. Die Datei "pthread.h" gibts nur auf Unix Systemen, da du aber Dev-C++ benutzt tippe ich mal darauf, dass du Windows benutzt und unter Windows gibts die Datei halt nicht. In Windows musst du die Datei "windows.h" einbinden und dann die Funktion "CreateThread" benutzten. Die hat aber n' paar andere Argumente als "pthread_create", also schau mal in die WinAPI.
    Solltest du dir aber mal überlegen nach Linux zu wechseln, dann kanst du dein Programm einfach mit:

    gcc test.c -o test -lpthread
    

    übersetzen. Sollte dein Programm in der Datei "test.c" abgelegt sein. Der aufruf des Programms erfolgs dann mit "./test".


Anmelden zum Antworten