Hallo,
ich arbeite jetzt schon seit längerem mit Threads, aber einige Fragen stellen sich immer noch bzw. ich habe teilweise widersprüchliches darüber gelesen. Hier sind 2 davon:
1.) Standard-Beispiel: Thread mit while-Schleife, die solange läuft, bis eine gemeinsame boolsche Variable (oder meinetwegen auch ein integer) zum Abbrechen gesetzt wird.
Muss man hier die Überprüfung der Variable bei jedem Schleifen-Durchlauf auch mit einem Mutex absichern ? Wie schaut es beim setzten (also Schreib-Zugriff) durch den anderen Thread aus ? Stichwort "atomic operations".
Bei komplexeren Datentypen oder Rechenoperationen ist mir die Sache ja klar...
2.) Was geschieht, wenn ich ein ganz normales C-Array (also z.B. char myArray[256]) mit einem QMutex schütze ? Ist der Zugriff auf die Elemente dann safe ? myArray ist ja nur ein Pointer, folglich wären nur die Address-Zuweisung für das erste Element (also z.B. myArray = 0x12345678) safe. Der Zugriff auf die Addressen der anderen Elemente und vorallem die Elemente selbst wäre nicht safe.
Oder schnallt der Mutex das etwa und sorgt für einen kompletten Schutz ?
Gruß,
Frank
Verständnisfragen zum Thema "Threads"
1.) Du brauchst keinen Mutex.
2.) Ein Mutex bedeutet Mutual Exclusion -> „gegen- oder wechselseitiger Ausschluss“
Du verhinderst, dass in deinem Code ein Kritischer Abschnitt in dem z.B. Datenstrukturen, verändert werden nicht parallel ausgeführt werden darf.
Andernfalls kann es zu inkonsistenten Zuständen der Daten führen.
Ein Mutex hat keine Ahnung was du in deinem "Kritischer Abschnitt" machst. Daten Strukturen werden also nicht geschützt. (auch das C Array
2.) Ein Mutex bedeutet Mutual Exclusion -> „gegen- oder wechselseitiger Ausschluss“
Du verhinderst, dass in deinem Code ein Kritischer Abschnitt in dem z.B. Datenstrukturen, verändert werden nicht parallel ausgeführt werden darf.
Andernfalls kann es zu inkonsistenten Zuständen der Daten führen.
Ein Mutex hat keine Ahnung was du in deinem "Kritischer Abschnitt" machst. Daten Strukturen werden also nicht geschützt. (auch das C Array
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: