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

Re: Thread / function Kategorie: Programmierung (von André H. - 24.05.2003 18:39)
Als Antwort auf Thread / function von ChristianK - 24.05.2003 9:59

Hallo Christian,

> 1. Was ist resourcenschonender ?

Bei Deinen beiden Beispielen ist der Thread resourcenschonender
als die Funktion.
Aber allgeimen kann man eher sagen: Je weniger Threads, desto weniger
Rescourcen werden benötigt. Das Thread-Handlich selbst benötigt schlie�lich
auch Rechenzeit.

Damit die Version mit der Funktion, also "ein Thread für alles", resourcensparender
ist, wäre noch ein Flag nötig:
byte flag;
function circulation_pump()
 {
 if var_ck.heat_time & flag
 Â  {
 Â  pcf.on(var_ck.pcf_relais,var_ck.umwaelzpumpe);
 Â  //rbports.set(var_ck.umwaelzpumpe,1);
 Â  var_ck.u_pumpe = "U-Pumpe An";
 Â  flag=0xFF;
 Â Â  }
 Â  else
 Â  if var_ck.heat_time==0
 Â  {
 Â  pcf.off(var_ck.pcf_relais,var_ck.umwaelzpumpe);
 Â  //rbports.set(var_ck.umwaelzpumpe, 0);
 Â  var_ck.u_pumpe = "U-PumpeAus";
 Â  flag=0;
 Â  }
 }

Allerdings würde es in diesem Fall eher fast auf dasselbe herauskommen.

> 2. Wenn der thread noch im wait-Status ist und wird von der
>     Schleife erneut aufgerufen, was passiert dann ?

Dazu sind ein paar Grundlagen nötig:
Jeder Thread hat Standardmä�ig die Priorität 0, au�er einer oder mehrere
Threads heiÃ?en "main". Diese besitzen zum Programmstart die Prio 32.
Threads mit einer Prio von grö�er 0 laufen sofort bei Programmstart los.
Folgende Prioritäten sind möglich:
0 = Thread steht = 0 VM-Operationen pro Durchlauf
1 bis 255 = Thread läuft = 1 bis 255 VM-Operationen pro Durchlauf
Mit "run ThreadName;" wird einem Thread die Prio 32 zugewiesen.
Aufgerufen im selben Thread mit "run Prio" wird die angegebene
Priorität zugewiesen.
Mit "resume" wird die Prio eines Threads auf den Wert vor der letzen
Ã?nderung der Prio gesetzt.
"halt" setzt die Prio eines Threads auf 0. Wird der Thread wieder gestartet, wird
an der letzten Position weitergemacht. Statt "halt"  könnte man auch "run 0" schreiben.
Eine weitere Anweisung ist "reset".
Mit dieser wird ein Thread zurückgesetzt. D.h. der Thread bekommt die selbe
Prio,wie zum Programmstart. Das heiÃ?t wiederum, alle Threads mit dem Namen "main"
erhalten die Standard-Prio 32 und alle anderen die Prio 0.
AuÃ?erdem beginnt der Thread wieder mit der ersten Anweisung.
Es wird auch ein möglicherweise von dem zu zurücksetzendem Thread
gesetztes Capture wieder freigegeben.

�brigens findest man alles bis auf "reset" auch im Handbuch erklärt. :-)

So, genug Grundlagen für Heute. :-)

MfG André H.


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Thread / function (von ChristianK - 24.05.2003 21:57)
    Re: Thread / function (von André H. - 29.05.2003 11:44)
        Re: Thread / function (von ChristianK - 30.05.2003 16:28)