mein debian-linux hat immernoch ein timing-problem mit Deinem Programm.
Manchmal läuft es ganz durch aber häufig so:
1 | ./a.out
|
2 | pause_read
|
3 | pause_write
|
4 | MAIN: thread creation done, sending signal: schreiben_moeglich
|
5 | run_write
|
6 | sending signal: lesen_moeglich
|
7 | run_read
|
8 | 1 2 3 4 5 6 7 8 9 10 sending signal: schreiben_moeglich
|
9 | pause_write
|
10 |
|
11 | pause_read
|
(mein debug-code im Anhang)
Man sieht das das signal schreiben_moeglich kommt noch bevor es bei
pause_write in die pthread_cond_wait Wartefunktion springt, die das
somit nicht empfängt, weil das signal zu früh kommt bzw. weil es zu dem
Zeitpunkt noch keinen schlafenden thread gibt, den man wecken könnte...
ich kenn mich mit pthreads nicht aus, weis also keine Lösung außer
globale Variablen, die irgendwie vorher prüfen ob ein thread pennt
oderso, aber das ist wohl eher nicht im Sinne von pthreads außerdem
könnte ja das signal kommen genau in dem moment, wo ich die variable
"thread pennt" gesetzt habe aber noch nen millisekundentick bevor der im
nächsten Schritt wirklich in das wait gesprungen ist...