Gemeinsame Daten für Threads - Mutex ?
-
Ich moechte in einem thread eine queue fuellen und diese queue in einem anderen thread auslesen.
dazu muss ich wohl einen mutex verwenden - aber wie?
hier mal ein thread beispiel das ich im forum gefunden habe, wo setze ich wie den mutex?
/*Uses Linux gcc *// #include <pthread.h> #include <stdio.h> // printf #include <unistd.h> // sleep void* thread_function1(void*) { // Der Type ist wichtig: void* als Parameter und Rückgabe printf("Thread 1 gestartet\n"); sleep(2); // 2 Sekunden warten for (int count = 0; count < 10; count++) { printf("Inside thread1 count %d \n",count); sleep (1); } printf("Thread 1 wird beendet\n"); return NULL; // oder in C++: return 0;// Damit kann man Werte zurückgeben } void* thread_function2(void*) { // Der Type ist wichtig: void* als Parameter und Rückgabe printf("Thread 2 gestartet\n"); sleep(3); // 3 Sekunden warten for (int count = 0; count < 5; count++) { printf("Inside thread2 count %d \n",count); sleep (1); } printf("Thread 2 wird beendet\n"); return NULL; // oder in C++: return 0;// Damit kann man Werte zurückgeben } int main() { //nur als beispiel //zugriff ueber thread1 und thread2 - aber wie? int gemeinsame_variable; pthread_t thread1; // Die Variable, in der der Tread 'gespeichert' wird // ein Initialisieren bedeutet zugleich das Erzeugen eines Threads: pthread_t thread2; pthread_create( &thread1, NULL, thread_function1, NULL ); sleep(1); // 1 Sekunde warten, damit der Thread seinen Text ausgibt pthread_create( &thread2, NULL, thread_function2, NULL ); sleep(1); // 1 Sekunde warten, damit der Thread seinen Text ausgibt printf("Hauptprogramm\n"); // Schließlich sollte man noch auf den Prozess warten: pthread_join( thread1, NULL ); pthread_join( thread2, NULL ); printf("Ende\n"); return 0; }
-
hilft das hier:
Threadwechsel unterdrücken
-
Danke.
Das ist glaube ich genau was ich suche