Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C164CI-ControllerBoard, eigenes Board, OSOPT V3.0, OSOPT V3.1
....
> 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)