Hi,
ein kritscher Abschnitt ist ein Bereich der nicht von 2 Threads gleichzeitig betreten werden darf... Prinzip ist verstanden.
Zählt das Verändern eines bool'schen Wertes, wie z.B der Stoppbedingung
auch dazu, sodass ich diesen Bereich mit einem Mutex Semaphor absichern muss ?
Mfg
Dominique
Was genau ist ein kritischer Abschnitt ?
-
Dominique1982
- Beiträge: 13
- Registriert: 24. Oktober 2006 11:09
Guck Dir mal den Wikipedia-Eintrag zu dem Thema an. Da ist unter Semaphor/Monitor auch ein Beispiel, wo man den Mechanismus braucht.
http://de.wikipedia.org/wiki/Mutex
http://de.wikipedia.org/wiki/Mutex
-
Dominique1982
- Beiträge: 13
- Registriert: 24. Oktober 2006 11:09
Danke für den Hinweis. Aber soweit ist mir der Begriff kritischer Abschnitt bekannt.
Meine Frage beschränkt sich eigentlich nur darauf, warum man beispielsweise die Stopvariable in den Beispielen von Qt immer mit einem Mutex absichert ( Funktion stop()). Was soll da schon passieren - ist doch nur ein Bit?
Meine Frage beschränkt sich eigentlich nur darauf, warum man beispielsweise die Stopvariable in den Beispielen von Qt immer mit einem Mutex absichert ( Funktion stop()). Was soll da schon passieren - ist doch nur ein Bit?
bool ist nicht 1 bit !ist doch nur ein Bit?
du kannst minimal 8 bit (1Byte) aufm comp adressieren. (schau mal definition byte !!! )
aus performancegruenden machen die compiler aber nen typ der sich schnell in die register lesen und manipuliert werden kann. Die prozessoren koennen das am besten mit werten die der registerbreite entsprechen.
Also auf 32 bit system (hardware) bool = 32 bit (4byte)
wenn du dem wert im register des proz nu hast, kann es unguenstigsten fall passieren das genau dann der threadwechsel erfolgt ... selbst bei einem bool kannst du dann schon aufn wert schreiben, der von nem anderen thread modifieziert wurde ohne das es mitbekommst ....
Mutexe funktionieren deshalb auch besonders nur mittels atomaren operationen ... lesen und modifizieren in einem rutsch (kann kein threadwechsel dazwischen erfolgen). Und das muessen die prozessoren selber und das BS unterstuetzen (tuns sie ja auch) ...
Ciao ..
-
Dominique1982
- Beiträge: 13
- Registriert: 24. Oktober 2006 11:09