Re: Einen Task mehrmals starten? Kategorie: Programmierung (von der andy - 6.01.2006 12:30) | |
Als Antwort auf Re: Einen Task mehrmals starten? von Josef Austen - 21.12.2005 13:39
| |
> > Hi! > > > > Kann man einen Task mehrmals starten? > > Also sagen wir ich hätte einen Task der einen Digitalport beobachtet und je nach Wert ein Relais schaltet > > oder halt nicht. Kann man diesen Task mehrmals starten so in der Art einer Klasse? Wenn ich den Task > > mit run xy startet verwei�t er ja immer wieder auf den gleichen Speicherbereich womit ich ihn ja nicht > > instanziert habe. > > > > der andy > > > > Tach ! > Was willst Du eigentlich machen ? > > > Ich lege solche Aufgaben eigentlich immer in einen Thread. > Diesen rufe ich EINMAL auf und schon läuft die Sache locker immer wieder durch. > Sollten bestimmte Port-Zustände in anderen Programmteilen benötigt werden muss man sie halt eben in > globalen Variablen hinterlegen. > > Hat eigentlich immer gefunzt ... > > Josef Ich habe externe LCD Anzeigen die vom C-Control seriell angesteuert werden. Es mu� sicher gestellt sein dass die Anzeigen das darstellen was angedacht ist. Dazu frage ich die Anzeige alle x Sekunden ab. Hätte ich jetzt Tasks die mehrmals gestartet werden können (wie gesagt ähnlich einer Klasse) schreibe ich einmal den Code für die Initialisierung der Anzeige und die Synchronisierung kann ich das für alle Anzeigen logischerweise gleich benutzen und alle Anzeigen funktionieren voneinander unabhängig. Beispiel: Thread für Anzeige 1,2 und 3 werden gestartet. Anzeige 1 und 3 initialisieren sich korrekt und funktionieren. Anzeige 2 initialisiert sich nicht weil z.B. keinen Strom. Je nachdem wie "dumm" mein Code ist blockiert dann sogard Anzeige 2 die Anzeige 1 und 3 weil auf Funktion von Anzeige 2 möglicherweise, wie gesagt je nachdem wie "dumm" mein Code ist, gewartet wird. Mache ich das in einem Thread hab ich viel mehr Verwaltungsaufwand. Mache ich das in 3 Threads kann Anzeige 1 und 3 ziemlich egal sein ob 2 nicht funktioniert, sie arbeiten einfach wie gewünscht. Klar kann ich mir auch den Thread 3 mal kopieren und hab das gleiche Ergebnis. Damit verliere ich aber die Möglichkeit dynamisch Anzeigen hinzu zu fügen oder zu entfernen. Klar kann ich mir auch wieder einen Thread so bauen dass ich das kann aber dann bin ich doch wieder voll bei Single Threading. Hab aufm 64er unter Single Threading in Assembler Funktionen geschrieben die "gemogeltes" Multi Threading konnten durch tausend (übertrieben) verschiedene Statusabfragen usw aber das ist irgendwie nicht der Sinn von Multi Threading. Habe mir jetzt was gebaut wo ich vom Main Thread (oder einem anderen Thread) dem "Anzeigen Thread" Kommandos schicken kann und auch eine Bestätigung des Kommandos vom Thread kriege. Funkt auch gut aber ich hab immer noch das Problem dass ich für jede Anzeige nen eigenen Thread brauche. der andy | |
Antwort schreiben Antworten: |