POSIX C-Threads. Mutex-Beispiel. Funktioniert nicht wie erwartet

8

Ich habe ein großes Problem, ich kann nicht herausfinden, warum Mutexe in C nicht so funktionieren, wie ich es erwarte. Das ist mein Code:

%Vor%

Ich erwarte, dass das Programm zuerst 100 "func" -Nachrichten und dann 100 "anotherFunc" -Nachrichten druckt. Was ich erwarte, ist die Ausführung, um func zu erreichen und den Mutex zu sperren. Wenn die Ausführung anotherFunc erreicht, erwarte ich zu warten, bis Func den Mutex freigibt. Aber ich bekomme eingegriffene Nachrichten wie

funktioniert Funk Funk anotherFunc anotherFunc anotherFunc Funk anotherFunc

Ich verstehe nicht, wie das Ding funktioniert. Bitte helfen Sie!

    
Jacob Krieg 15.04.2012, 11:02
quelle

2 Antworten

16
%Vor%

Du zerstörst den Mutex bevor die Threads damit erledigt sind, also sind alle Wetten aus. Wahrscheinlich willst du pthread_join die 2 Threads vor dem Zerstören machen.

    
cnicutar 15.04.2012, 11:04
quelle
2

Ich habe einige Übersetzungsfehler

  • Ich konnte int i in für Schleife

  • nicht deklarieren
  • Verwendete einen Argumentnamen arg als Argument für die Threads "func" und "anotherFunc"

Ich habe pthread_join benutzt, bevor den Mutex zerstört hat.

Auf diese Weise zerstöre ich meinen Mutex "mymutex", nachdem beide Threads "func" und "anotherFunc" ihre Ausführung beendet haben

Auch jeder Thread hat jetzt seine eigene Thread-ID "mythread1" und "mythread2" . Auf diese Weise kann ich die Funktion pthread_join () für jeden Thread

%Vor%     
Azeemali Hashmani 11.12.2014 07:00
quelle