Re: menudemo.c2 Kategorie: Programmierung (von nitraM - 9.06.2009 14:55) | ||
Als Antwort auf Re: menudemo.c2 von Markus - 9.06.2009 13:49 | ||
| ||
.... > Nun zur Frage des Capture: > Wenn man erreichen will, dass in einem Thread eine bestimmte Anzahl Codezeilen an einem Stück, > das heist ohne Unterbruch und weitere Codeverarbeitung in anderen Threads abgearbeitet werden, dann > ist dieser Codeteil mit einem Capturekonstrukt einzurahmen. Somit wird dieser Codeabschnitt immer an > einem Stück abgearbeitet. > > Im von dir verwendeten Code kommt dieses Capture in einem Abschnitt vor, in dem auch für mich in > unverständlicher Weise mit den Befehlen reset, resume und yield umgegangen wird. > Yield gibt die Ausführung sofort an den nächsten Thread ab, obschon sich der aktuelle Thread in einer > Capturephase befindet. Zudem ruft er einen anderen Thread auf. Das ganze scheint mir echt Hohe > Schule oder zweifelhaft zu sein. > Versuche es vielleicht mit einem andern Muster z.Bsp. dialog von dieser Webseite. > > Gruss: Markus > Hallo Markus, das mit dem Capture hast du falsch verstanden.... :-o Die Anzahl der nacheinander verarbeiten Maschinencode wird über die Priorität gesteuert, je grö�er der Wert bei run um so mehr wird am Stück abgearbeitet. Der Befehl yield beendet die momente Abarbeitung und gibt die Rechenleistung an den nächsten Fred :-) weiter, auch wenn die maximale Befehlszahl noch nicht erreicht wurde. Hierdurch erreichts du, das im nächsten Durchlauf ein Programmteil mit der maximalen Rechenzeit bearbeitet wird. Wenn du aus mehreren Thread's auf eine Resurche zugeriffen werden soll, hast du das Problem, das man nicht sicherstellen kann, das kein anderer Programmteil ebenfals etwas damit macht. An dieser Stelle kommt das Capture ins Spiel. Stell dir das bildlich als Fahne vor. Ein Programm darf den Bereich der hinter dem Capture nur abarbeiten wenn es diese Fahne besitzt. Ist das Capture frei, so "greift" sich das Programm das Capture (die Fahne) und und gibt sie erst am Ende des entsprechenden Programmabschnittes wieder frei. Kommt ein Programm an ein Capture welches schon durch ein anderes Programm belegt ist, so wartet dieses bis das Capture freigegeben wird. Ist dieses wieder frei, "greift" es sich dieses und die anderen Progammteile müssen zum Teil warten, wenn sie auf diese Resurche zugreifen wollen. Wichtig ist es, darauf zu achten, das ein Capture nach dem setzen auch wieder freigegeben wird, ansonsten wartet dein Programm bis in alle Ewigkeit... nitraM | ||
Antwort schreiben Antworten: Re: menudemo.c2 (von Bloodynooby - 13.06.2009 18:26) |