Re: Nebenlaeufigkeit programmieren

From: Bernd Walter <ticso(at)cicely9.cicely.de>
Date: Fri, 14 Feb 2003 22:49:01 +0100

On Fri, Feb 14, 2003 at 07:14:41PM +0100, Marc Santhoff wrote:
> N'Abend Bernd!
>
> Am Fr, 2003-02-14 um 17.55 schrieb Bernd Walter:
> > On Fri, Feb 14, 2003 at 05:33:45PM +0100, Marc Santhoff wrote:
> > > Ich brauche mal ein RTFM oder Denkanstöße für folgendes Problem:
> > >
> > > Ein (Userland)Programm soll zwei Aufgaben quasi-parallel erledigen.
> > > Dabei handelt es sich um eine lesende Datensammlung (mit select) und die
> > > asynchrone Aufbereitung der gelesenen Daten mit Bidschirmausgabe.
> >
> > Warum muß die Aufbereitung der Daten asyncron vom Empfang passieren?
> > Braucht die Aufbereitung so lange?
>
> Das ist allerdings eine gute Frage. Der Grundgedanke dabei war
> Modularität und Wiederverwendbarkeit. Für eine schnelle praktikable
> Lösung hast Du recht, da kann ich auch einen Timer benutzen, der bei
> Ablauf die Ausführung der weniger aufwendigen Aufgabe anstößt.

Modularität ist natürlich eine Sache, ein weiterer Grund, warum du
das mit Threads amchen solltest, weil die einfacher Modular zu
halten sind.
Ansonsten braucht man asyncrone Verarbeitung eigendlich immer dann,
wenn die Verarbeitung mitunter länger dauern kann, als der Eingabe-
zyklus.
Dann hat man die Chance bei der Ausgabe einen Status zu überspringen.
Aber auch in diesem Fall gibt es mehr als einen Lösungsansatz.

> Kniffelig wird es dann eben mit der Steuerung der Hauptsache, aber
> select() sollte ja nur zurückkehren, wenn es etwas zu lesen gibt oder
> das timeout abgelaufen ist. Das ist dann der Ereignismechanismus. Oder
> verstehe ich was falsch?

Vorsicht: select kehrt mitunter auch aus anderen Gründen zurück, z.B.
          bei errno == EINTR und errno == EAGAIN.
Gerade heute erst wieder über ein Programm gestolpert, das sporadisch
versagt hat, weil die Behandlung für den Fall vergessen wurde.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso(at)cicely.de         Usergroup           info(at)cosmo-project.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 14 Feb 2003 - 22:49:26 CET

search this site