🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fras.text.programmieren
Article #28

Re: Task-Fragen

#28
From: Erik Wasser
Date: Fri, 15 Sep 1995 10:25
61 lines
3188 bytes
S.ZIMMERT@AME.osn.de (Steffen Zimmert) benutzte seine Tastatur am
13.09.1995 um 18:24:00 Uhr, um folgenden Text unter dem Betreff
"Task-Fragen" zu erzeugen:

> Hallo liebe Leute!
> 
> Beim Programmieren stellte sich mir das Problem, daß mein  Programm  zwei  Dinge
> [...]
> anlegen.

Hört sich sinnvoll an.

> Zum Erzeugen des Task dachte ich an die Verwendung von  `CreateTask()`  aus  der
> amiga.lib,  da  dies  offensichtlich  die  komfortabelste Möglichkeit darstellt.

Das ist falsch: ein Task, darf nicht auf die dos.library zugreifen. Das
steht aber auch in der Beschreibung von 'amiga.lib/CreateTask()'. Dazu
mußt du dos.library/CreateNewProcess() benutzen.

> 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?

Nein, Parameter kannst du nicht übergeben! Weder bei deiner noch bei
meiner Möglichkeit.

Einzige Möglichkeit:

dos/dostags.h und dort bei 'NP_Arguments' schauen. Habe ich selber aber
noch nicht ausprobiert.

> 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?

Du setzte eine globale Variabel runter, die dann abgefragt wird, wenn
der Maintask sich beenden soll.

Du kannst dem Maintask eine Nachricht schicken. Programmtechnisch
genauso gut oder schlecht! B-)
> 
> 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?

Offiziell schon, aber das gehört nur zu gutem Programmierstill. Sollte
man machen, wg. Kompatibilitätsgründen!

> Was passiert eigentlich, wenn der Child-Task während der Ausführung hängen
> bleibt? Normalerweise kann man dann ja das Programm nicht beenden....

Pech gehabt! Kann man nicht viel machen!

---
So long... Fuzz (@AMB.gun.de)
Technical Details
Message-ID: <wWXDDMD256aCz4@-fuzz.amb.gun.de>
Path: arc1-ca.pugleaf.net!amb.gun.de!FUZZ
References: <wVz3gMD356aez2@p-zimmer.ame.osn.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!amb.gun.de!FUZZ
From: FUZZ@AMB.GUN.DE (Erik Wasser)
Newsgroups: fras.text.programmieren,z-netz.rechner.amiga.programmieren
Subject: Re: Task-Fragen
Date: 15 Sep 95 12:25:39 +0200
Message-ID: <wWXDDMD256aCz4@-fuzz.amb.gun.de>
References: <wVz3gMD356aez2@p-zimmer.ame.osn.de>
X-Mailer: MicroDot 1.11beta12 [REGISTERED 000256]
X-Gateway: ZCONNECT UH ldb.han.de [UUCPfZ V5.64 U002]
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-ZC-Telefon: V+49-221-4303752