Nebenläufig programmieren
Moderator: Guido Körber
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
Nebenläufig programmieren
Hallo,
ich habe ein grundsätzliches Problem. Wie prorgammiert man nebenläufig (mit C/C++) ?
Beispiel: Ich lasse beim Start meiner Anwendung, die LEDs meines IO-Warriors blinken.
Leider bleibt meine Anwenungs solange "stehen", was auch klar ist, da das Blinken mit zwei for-Schleifen realisiert ist.
Wie bekomme ich es nun hin, daß die LEDs blinken und die Anwendung in dieser Zeit bedienbar bleibt, bzw. anderen code abarbeitet?
ich habe ein grundsätzliches Problem. Wie prorgammiert man nebenläufig (mit C/C++) ?
Beispiel: Ich lasse beim Start meiner Anwendung, die LEDs meines IO-Warriors blinken.
Leider bleibt meine Anwenungs solange "stehen", was auch klar ist, da das Blinken mit zwei for-Schleifen realisiert ist.
Wie bekomme ich es nun hin, daß die LEDs blinken und die Anwendung in dieser Zeit bedienbar bleibt, bzw. anderen code abarbeitet?
Last edited by stefan-tiger on Wed Apr 05, 2006 10:55 am, edited 1 time in total.
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
in delphi gibt es 'nen simplen timer, bei dem man, wenn er auslöst die LED's toggeln könnte, ich kann mir vorstellen, dass visual c++ express auch sowas ähnlicheswie 'ne timer componente hat. der timer ist nicht wirklch genau bei delphi, hat relativ niedirge priorität, was für ein "ich lebe und arbeite"-LED blinken aber eher irrelevant sein sollte...
gruß Martin
gruß Martin
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
Ich mache alles OHNE IDE ;) nur mit Qt und dem iowkit.HappyAura wrote:in delphi gibt es 'nen simplen timer, bei dem man, wenn er auslöst die LED's toggeln könnte, ich kann mir vorstellen, dass visual c++ express auch sowas ähnlicheswie 'ne timer componente hat. der timer ist nicht wirklch genau bei delphi, hat relativ niedirge priorität, was für ein "ich lebe und arbeite"-LED blinken aber eher irrelevant sein sollte...
gruß Martin
Da ich später sehr (zeit-) präzise ein- und ausgeben will ich nicht schon zu Beginn mit "ungenauen timern" arbeiten.
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Dazu kommt dann noch die Frage nach dem Hostcontroller. OHCI Controller können zum IOW24 und IOW40 etwa 10 mal schneller Daten senden als UHCI Controller.
Was Threads und Prozesse angeht: Nebenläufigkeit bezieht sich genau auf Threads und Prozesse. Nebenläufig heisst, dass mehrere Threads oder Prozesse quasi-parallel auf einem Prozessor laufen (nicht wirklich parallel, weil ja ein Prozessor nicht zwei Dinge auf einmal machen kann). Parallele Threads und Prozesse dagegen setzen mehr als einen Prozessor voraus (egal ob echte Prozessoren, Hyperthreading oder Spezialprozessoren wie GPUs).
Was Threads und Prozesse angeht: Nebenläufigkeit bezieht sich genau auf Threads und Prozesse. Nebenläufig heisst, dass mehrere Threads oder Prozesse quasi-parallel auf einem Prozessor laufen (nicht wirklich parallel, weil ja ein Prozessor nicht zwei Dinge auf einmal machen kann). Parallele Threads und Prozesse dagegen setzen mehr als einen Prozessor voraus (egal ob echte Prozessoren, Hyperthreading oder Spezialprozessoren wie GPUs).
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
Eigentlich müsste ja jedes Spiel dann so aufgebaut sein, soviele Dinge wie da quasi-gleichzeitig ablaufen.Guido Körber wrote:.. Nebenläufig heisst, dass mehrere Threads oder Prozesse quasi-parallel auf einem Prozessor laufen (nicht wirklich parallel, weil ja ein Prozessor nicht zwei Dinge auf einmal machen kann). Parallele Threads und Prozesse dagegen setzen mehr als einen Prozessor voraus (egal ob echte Prozessoren, Hyperthreading oder Spezialprozessoren wie GPUs).
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Das ist dann eine Frage der Anwendung.stefan-tiger wrote:So schnell muss es nicht sein, aber schon so, daß man nicht das Gefühl eines delays hat.
Wenn es um Hand/Auge Koordination geht sind Regelschleifen unter 20msec ausreichend und ab ca. 10msec gibt es eigentlich auch keine Ausnahmebegabten mehr, die ein Delay spüren.
Bei Audio ist das was anderes, alles über 4-5 msec kann da schon richtig gruselig sein und spätestens bei 10-20msec hört es auch der völlig unmusikalische Mensch.
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Kann, muss aber nicht. Wenn die Spielmechanismen ausreichend einfach für die verwendete Plattform sind kann das mit einer statischen Loop abgehen. Beispielsweise viele 3D Shooter benutzen aber Threads, alleine schon um Netzwerk, Eingabe und Ausgabe zu entkoppeln. Zudem ist bei Verwendung von 3D ohnehin Threading notwendig, da sonst der Hauptprozessor sinnlos darauf warten würde, dass der Grafikprozessor fertig wird. Und man hat dann natürlich die Option Darstellungsprozesse besser zu skalieren, wird das Bild nicht fertig bevor was neues passiert fängt man halt das nächste an.stefan-tiger wrote:Eigentlich müsste ja jedes Spiel dann so aufgebaut sein, soviele Dinge wie da quasi-gleichzeitig ablaufen.
Re: Nebenläufig programmieren
Hallo Stefan,stefan-tiger wrote:Beispiel: Ich lasse beim Start meiner Anwendung, die LEDs meines IO-Warriors blinken.
Leider bleibt meine Anwenungs solange "stehen", was auch klar ist, da das Blinken mit zwei for-Schleifen realisiert ist.
Wie bekomme ich es nun hin, daß die LEDs blinken und die Anwendung in dieser Zeit bedienbar bleibt, bzw. anderen code abarbeitet?
Du benötigst dafür keine Threads, wenn Du mit einem Event-gesteuerten Framework, wie z.B. der MFC von MS oder QT arbeitest.
Unter http://www.salomon-freising.de/iow findest Du ein Beispiel (s. Tutorial) und eine kleine Lib für Digitalen IO.
Gruß
Werner
-
- Posts: 33
- Joined: Wed Mar 15, 2006 2:37 pm
- Location: Pforzheim
Re: Nebenläufig programmieren
Ich habs mal mit Qt signals&slots probiert. Leider ohne erfolg.Werner wrote:...
Du benötigst dafür keine Threads, wenn Du mit einem Event-gesteuerten Framework, wie z.B. der MFC von MS oder QT arbeitest.
...