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
    Ende

    Was ich erwartet hatte:

    Thread 1 gestartet
    Thread 1 wird beendet
    Hauptprogramm
    Ende

    Ich danke euch vielmals!!





  • Danke dir! 🙂 Hat geklappt.


Anmelden zum Antworten