Mutex
-
Hallo,
kann mir jemand helfen? Ich habe ein Stück Code gefunden um einen Thread zu programmieren, und wollte durch einen Mutex erreichen, das die Ausgaben der jeweiligen Funktionen nacheinander ausgegeben werden. Kann mir jemand sagen warum das nicht klappt?
#include <pthread.h> #include <stdio.h> // printf #include <unistd.h> // sleep #include <stdlib.h> pthread_mutex_t mylock; void* thread_function1(void*) { // Der Type ist wichtig: void* als Parameter und Rückgabe pthread_mutex_lock(&mylock); printf("Thread 1 gestartet\n"); sleep(3); // 3 Sekunden warten printf("Thread 1 wird beendet\n"); pthread_mutex_unlock(&mylock); return NULL; // oder in C++: return 0;// Damit kann man Werte zurückgeben } int main() { pthread_t thread1; // Die Variable, in der der Tread 'gespeichert' wird // ein Initialisieren bedeutet zugleich das Erzeugen eines Threads: pthread_create( &thread1, NULL, thread_function1, NULL ); sleep(1); // 1 Sekunde warten, damit der Thread seinen Text ausgibt pthread_mutex_lock(&mylock); printf("Hauptprogramm\n"); // Schließlich sollte man noch auf den Prozess warten: pthread_join( thread1, NULL ); pthread_mutex_unlock(&mylock); printf("Ende\n"); return 0; }
Ausgabe:
Thread 1 gestartet
Hauptprogramm
Thread 1 wird beendet
EndeWas ich erwartet hatte:
Thread 1 gestartet
Thread 1 wird beendet
Hauptprogramm
EndeIch danke euch vielmals!!
-
Es fehlt ein pthread_mutex_init http://opengroup.org/onlinepubs/007908775/xsh/pthread_mutex_init.html
-
Danke dir!
Hat geklappt.