Re: Multithreading und allgemeine Programmierung Kategorie: Programmierung C (von PeterS - 13.01.2012 13:25) | |
Als Antwort auf Re: Multithreading und allgemeine Programmierung von Franz-Peter - 13.01.2012 13:02
| |
> > > 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 | |
Antwort schreiben Antworten: Re: Multithreading und allgemeine Programmierung (von Fertelle - 13.01.2012 16:19) 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