Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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: > <font face="courier new" size=2>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; > } > } > </font> > 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 <i>ThreadName</i>;" wird einem Thread die Prio 32 zugewiesen. > Aufgerufen im selben Thread mit "run <i>Prio</i>" 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.