Article View: fras.text.programmieren
Article #27Task-Fragen
From: Steffen Zimmert
Date: Wed, 13 Sep 1995 17:24
Date: Wed, 13 Sep 1995 17:24
41 lines
2815 bytes
2815 bytes
Hallo liebe Leute!
Beim Programmieren stellte sich mir das Problem, daß mein Programm zwei Dinge
unabhängig voneinander und parallel zu bewerkstelligen hat. Deshalb dachte ich
mir, den anderen Programmteil als separaten Task zu starten. Der Programmteil
Öffnet das Audiodevice, lädt ein IFF-File, spielt es beliebig oft ab und gibt
anschließend alle reservierten Ressourcen wieder frei. Nebenher hat das
Hauptprogramm noch andere Dinge zu erledigen, also will ich einen neuen Task
anlegen.
Dazu habe ich mir einmal die entsprechenden Seiten der RKRM `Libraries` zu
Gemüte geführt und wie üblich sind noch ein paar Fragen offen geblieben, die ich
hoffentlich mit Euerer Hilfe beantworten kann.
Zum Erzeugen des Task dachte ich an die Verwendung von `CreateTask()` aus der
amiga.lib, da dies offensichtlich die komfortabelste Möglichkeit darstellt.
Unter anderem muß auch die Adresse einer Funktion angegeben werden, mit der der
Task seine Arbeit aufnimmt. Die in den Beispielen aufgeführten Funktionen sind
alle vom Typ `void function(void)`. Ist es vorgeschrieben, daß nur
void-Funktionen zum Einsatz kommen dürfen oder ist auch die Übergabe von
Parametern nach dem Motto `void function(LONG Type)` möglich?
Eine weitere Frage hätte ich zur Koordination zwischen den beiden Tasks. Es ist
logisch und auch im RKRM angeführt, daß der Haupttask erst beendet werden kann,
wenn der Child-Task seine Arbeit beendet hat. Kann man dafür eine globale
Variable definieren, die dann vom Child-Task je nach Zustand gesetzt wird? Oder
kann mir jemand eine elegantere Lösung präsentieren?
Als letztes würde mich noch interessieren, wie die Verwendung der Bibliotheken
zwischen den einzelnen Tasks geregelt ist. Laut RKRM ist es nicht möglich, die
Library-Pointer des Haupt-Task an den Child-Task zu übergeben, richtig(Außer der
Exec-Library)? Heißt das für mich, jede Bibliothek nochmal durch den Child-Task
zu öffnen, um eine darin enthaltene Funktion nutzen zu können?
Was passiert eigentlich, wenn der Child-Task während der Ausführung hängen
bleibt? Normalerweise kann man dann ja das Programm nicht beenden....
MfG, Steffen
-- MicroDot V1.10
Technical Details
Message-ID:
<wVz3gMD356aez2@p-zimmer.ame.osn.de>Path:
arc1-ca.pugleaf.net!ame.osn.de!S.ZIMMERTShow Full Headers
Complete Article Headers
Newsgroups: fras.text.programmieren,z-netz.rechner.amiga.programmieren Message-ID: <wVz3gMD356aez2@p-zimmer.ame.osn.de> From: S.ZIMMERT@AME.osn.de (Steffen Zimmert) Path: arc1-ca.pugleaf.net!ame.osn.de!S.ZIMMERT Organization: AME Erlangen Subject: Task-Fragen Date: Wed, 13 Sep 1995 19:24:00 +0200 X-Mailer: MicroDot 1.10 [REGISTERED 000356] X-Gateway: ZCONNECT UP royal.owl.de [UNIX/Connect v0.73] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Z-Post: Hagelsteingasse 2 X-Z-Telefon: 09841/5416