Re: Multithreading und allgemeine Programmierung Kategorie: Programmierung C (von Fertelle - 13.01.2012 16:19) | ||
Als Antwort auf Re: Multithreading und allgemeine Programmierung von PeterS - 13.01.2012 13:25 | ||
| ||
> > > > P.S - ein kleiner Nachtrag: > > > > es macht auch keinen Sinn, in Funktionen �bergabeparameter zu definieren, und die dann am Anfang > > > > der Funktion direkt zu überschreiben. Globale Variable kannst Du in der Funktion direkt verwenden, > > > > und �bergabeparameter werden beim Aufruf gesetzt. Natürlich kann man die in der Funktion auch > > > > ändern, aber wenn man sie nicht als �bergabewerte braucht, sollte man sie auch nicht als Parameter, > > > > sondern als lokale Variable definieren. > > > > Gru� > > > > Franz-Peter > > > > > > > > > Vielen Dank erst mal! > > > > > > Hab den Code jetzt mal abgeändert und bekomme auch keine Fehler mehr! > > > Hab am Montag ein Praktikum wo wir mit threads arbeiten und wollt fragen ob der Code im jetzt soweit > > > in Ordnung ist (funktionsfähig) ist. > > > Warum kann ich/sollte ich threads nicht solange andauern lassen (1s,2s)? > > > Was ich mit den �bergabevariablen erreichen will ist folgendes: Ich übernehme die werte der globalen > > > Variablen,wenn der thread wechselt werden diese nicht überschrieben und die globalen Variablen haben die selben > > > Werte als am Anfang die ich für die zweite Funktion verwenden kann.Lieg ich richtig?Wie könnt ichs besser machen? > > > > > > Vielen Dank.Fertelle > > > > Hallo Fertelle, > > natürlich kannst Du im Thread lokale Variablen verwenden, wenn du die globalen Variablen unangetastet > > lassen willst (wobei die in deinem Programm ja gar nicht verändert werden - und allein der Thread- > > Wechsel ändert sie auch nicht). Nur solltest Du sie dann auch als lokale Variable deklarieren und > > nicht als �bergabeparameter. �bergabeparameter gibt es bei einem Thread nun mal nicht. > > > > Ein Thread ist im Prinzip nichts anderes wie eine 2. (oder 3., 4....) main() Routine, die quasi > > parallel zur Haupt main() Routine ausgeführt wird. Wenn Du die Wechselzeiten sehr gro� machst, dann > > laufen sie eben nicht 'quasi-parallel' ab, sondern in grossen Zeitscheiben spürbar nacheinander, > > was eigentlich nicht der Sinn einer Thread-Implementierung ist. Nur das Thread_Delay verändert > > dieses Verhalten noch, denn es führt auch zu einem Thread-Wechsel. > > > > In der jetzigen Version beendet sich dein main() nach dem letzten Thread_Start (Das Thread_Delay > > danach ist deshalb letzendlich wirkungslos). Ich bin mir nicht ganz sicher, ob die anderen Threads > > weiterlaufen, wenn sich main() beendet, glaube aber schon. Es ist aber auf jeden Fall eine eher > > ungewöhnliche Programmierung, die man normalerweise nicht so realisieren würde. > > > > N.B: da Du ja nur ein einzelnes Bit im Port setzen/Rücksetzen willst, muss Du auch beim Schreiben > > die Bit-Variante der Lib verwenden (Port_WriteBit ). Mit Port_Write() änderst Du alle 8 Bits eines > > Byte-Ports auf einmal. > > Gru� > > Franz-Peter > > Bei Beendigung (auch Thread_Kill) von Thread 0 (Hauptprogramm) wird die komplette > Abarbeitung angehalten. > > Gruss Peter Danke, so langsam wirds immer klarer! hab den Code jetzt mal etwas vereinfacht und nochmals angehängt. Wenn ich den Command Thread_Delay verwende spring ich aus meiner Funktion raus und bearbeite die nächste Funktion, sehe ich das so richtig? Da ich nur threads in meiner Main Funktion habe springe ich auch nur von einem thread zum anderen, da die Main ja sonst eigentlich nichts zu tun hat? Würde man so programmieren wie ichs jetzt gemacht habe oder zu einfach? Vielen, vielen Dank. Fertelle my_try.zip | ||
Antwort schreiben Antworten: Re: Multithreading und allgemeine Programmierung (von Franz-Peter - 13.01.2012 17:32) Re: Multithreading und allgemeine Programmierung (von Fertelle - 14.01.2012 11:20) Re: Multithreading und allgemeine Programmierung (von PeterS - 13.01.2012 17:19) Re: Multithreading und allgemeine Programmierung (von Fertelle - 14.01.2012 11:22) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum