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

Re: threads Kategorie: Programmierung (von ChristianS - 11.11.2010 20:43)
Als Antwort auf Re: threads von nitraM - 11.11.2010 9:36
Ich nutze:
C-Control II Station, OSOPT V3.1
> > Hallo,
> > eine Frage zu threads habe ich noch, das habe ich noch nicht richtig verstanden.
> > Wenn ich die Proritäten von threads ändern möchte, dann starte ich die mit
> >
> > run <i>Priorität;</i>

> >
> > Wenn ich das richtig verstanden habe, ist die Std.-Prio 32. Aber was heisst das jetzt konkret?
> > Habe ich sehr zeitkritische threads, wähle ich dann eine niedrige, oder eine hohe Priorität?
>
> Halo Christian
>
> einfach mal das Handbuch lesen... (Seite 73+)
>
>  ...schnipp...
>
> 5.9.3 Prioritätssteuerung
> Die virtuelle Maschine der C-Control II Unit stellt jedem Thread soviel Rechenkapazität zur
> Verfügung, wie es seinem Prioritätswert entspricht. Ein Thread mit Priorität 32 kann genau
> 32 virtuelle Maschinenoperationen hintereinander ausführen, bevor ihn das System unterbricht
> und der nächste Thread an der Reihe ist. Zur Orientierung: die Anweisung
> a = b + c;
> wird in vier virtuellen Maschinenoperationen ausgeführt, wenn a,b und c vom gleichen
> numerischen Datentyp sind:
> 1. b auf den Stack laden
> 2. c auf den Stack laden
> 3. Addition
> 4. Ergebnis in a speichern
>
> Komplexere Anweisungen sind entsprechend umfangreicher. Das System kann einen
> Thread durchaus auch innerhalb einer Anweisung unterbrechen, z.B. vor der Addition im
> obigen Beispiel. Da jeder Thread mit seinem eigenen Stack arbeitet, gibt es dabei keine
> Probleme.
>
> Zur �nderung der Priorität eines Threads gibt es in C2 verschiedene Schlüsselworte.
> â?¢ run
>
> Das Schlüsselwort run wird in zwei Formen verwendet. Form 1 setzt die Priorität des angegebenen
> Threads auf den Standardwert 32. Diese Form dient in der Regel dazu, um von
> main-Threads aus andere Threads zu starten. Form 2 setzt die Priorität des aktuell ausgeführten
> Threads auf das Ergebnis des angegebenen numerischen Ausdrucks.
>
> Form 1:
> run ThreadName;
> z.B.:
> run blink2;
>
> Form 2:
> run numerischer Ausdruck;
> z.B.:
> run 100;
> Beachten Sie, da� ein stillstehender Thread (Priorität 0) sich niemals mit run selbst starten kann!
>
>                                                   ...schnapp...
>
> nitraM

Hallo nitraM,
das Handbuch hatte ich schon gelesen, allerdings ist mir das immer noch nicht ganz klar.
Heisst das jetzt, dass ich für zeitkritische Routinen viel Rechenzeit brauche und einen hohen
nummerischen Wert verwende, und für eine einfache, unwichtige Routine halt einen niedrigen Wert?
z.B. run 5 und der thread dümplet vor sich hin. Hast Du Erfahrungen mit den Werten?
Meinem IR thread gebe ich ein run 100 und meinem sekundengenauen Timer den Wert 10? Oder muss
man das einfach ausprobieren. Was macht man, wenn man 20 unkritische threads hat und 5
zeitkritsche? Gibt man dann 20 mal die Prio 5 und 5 mal die Prio 100? Oder staffelt man das.
Wie gesagt, dass krieg ich irgendwie nicht auf die Kette...
ChristianS.


    Antwort schreiben


Antworten:

Re: threads (von nitraM - 12.11.2010 7:53)