Forum: PC-Programmierung Tasks und Rendezvous in Ada


von Alexander F. (alexf91)


Lesenswert?

Hallo,
Ich beschäftige mich gerade (gezwungenermaßen) mit Ada und habe 
folgendes Szenario:

Ich habe einen Mastertask, der einen Pool von Workertasks erzeugt.
Vom Mastertask kann ich mit Hilfe von Rendezvous mit den Workertasks 
interagieren.
Wie kann ich das aber in die andere Richtung machen? Also so, dass sich 
die Workertasks bei einer abgeschlossenen Berechnung beim Mastertask 
melden.

von Echte Computer sind PCs überlegen (Gast)


Lesenswert?

mein Herz macht einen Freudehupf, dass hier mal was zu einer 
RichtigenProgrammiersprache[TM] kommt :-)
Leider sind meine Kenntnisse in Ada nicht mehr flüssig...

Ich denke die 2-Wege-Kommunikation musst Du mit was in der Richtung wie 
MessageBox oder so abwickeln...
(kann sein dass ich mich irre)

von Andreas H. (ahz)


Lesenswert?

Alexander F. schrieb:
> Wie kann ich das aber in die andere Richtung machen? Also so, dass sich
> die Workertasks bei einer abgeschlossenen Berechnung beim Mastertask
> melden.

Requeue ?

(z.B. 
https://www.auto.tuwien.ac.at/~blieb/ADA-Skriptum_TeX/gesamt/node93.html)

Grüße
Andreas

P.S:

Echte Computer sind PCs überlegen schrieb:
> mein Herz macht einen Freudehupf, dass hier mal was zu einer
> RichtigenProgrammiersprache[TM] kommt :-)
> Leider sind meine Kenntnisse in Ada nicht mehr flüssig...

Offensichtlich. Sonst hättest Du Richtigen_Programmiersprache 
geschrieben ;-)

A.

von gg (Gast)


Lesenswert?

vielleicht mal das kapitel intertaskkommunikation studieren. es ist 
immer etwa dasselbe, mit anderen namen.  semahore, messagebox, message 
queue

von Heiner K. (heinerkuhlmann)


Lesenswert?

Alexander F. schrieb:
> Hallo,
> Ich beschäftige mich gerade (gezwungenermaßen) mit Ada und habe
> folgendes Szenario:
>
> Ich habe einen Mastertask, der einen Pool von Workertasks erzeugt.
> Vom Mastertask kann ich mit Hilfe von Rendezvous mit den Workertasks
> interagieren.
> Wie kann ich das aber in die andere Richtung machen? Also so, dass sich
> die Workertasks bei einer abgeschlossenen Berechnung beim Mastertask
> melden.

Grundsätzlich ist eine bidirektionale Kommunikation zwischen Mastertask 
und Workertasks möglich.

Meistens ist Mastertask das Hauptprogramm, das natürlich keine Entries 
hat.

Man könnte die Mastertask als eigene Task mit Entries implementieren mit 
der dann die  Workertask kommunizieren. Man hätte eine unmittelbare 
bidirektionale Kommunikation zwischen Task mit hoher Gefahr von 
Deadlocks.

Die beste Lösung ist eine Agenten-Task dazwischen zu schalten. Die 
Workertasks senden ihre Nachrichten an den Agenten und die Mastertask 
(das Hauptprogramm) pollt den Agenten mit einen timed oder conditional 
entrycall.

Eine elegante Lösung ist für die Agenten-Task einen Protected Type 
vorzusehen.

Vielleicht hilft's Dir

Heiner

von Alexander F. (alexf91)


Lesenswert?

Danke für die Antworten.

Heiner K. schrieb:
> Man könnte die Mastertask als eigene Task mit Entries implementieren mit
> der dann die  Workertask kommunizieren.

So habe ich das jetzt vorerst gelöst, vielleicht ändere ich das noch.
Das ganze ist für eine Übung an der Uni, bringt also kein Flugzeug zum 
Absturz ;-)

Echte Computer sind PCs überlegen schrieb:
> mein Herz macht einen Freudehupf, dass hier mal was zu einer
> RichtigenProgrammiersprache[TM] kommt :-)

Wirklich begeistert bin ich noch nicht, aber vielleicht kommt das ja 
noch.
Interessant ist die Sprache aber auf jeden Fall.

von Andreas H. (ahz)


Lesenswert?

Alexander F. schrieb:
> Wirklich begeistert bin ich noch nicht, aber vielleicht kommt das ja
> noch.
> Interessant ist die Sprache aber auf jeden Fall.

Interessant finde ich vor allem die "Denke":

- Programme sollen eher gut lesbar als schreibbar sein (Programmierer 
wechseln ja auch mal).

- Maintainence, maintainance und (rate...) maintainance.
  In vielen Bereichen muss Software SEEEEHR lange gepflegt werden.
 (ein nicht-ADA Beispiel, zugegebenermassen eher Extrem: 
http://www.popularmechanics.com/space/a17991/voyager-1-voyager-2-retiring-engineer/)

  Was denkst Du, wie alt die SW in einem 20 Jahre Kraftwerk ist ?

  Und warum ist (auch heute noch) COBOL die am weitesten verbreitetste 
Sprache? COBOL, NICHT Java^^ 
(http://www.computerworld.com/article/2502430/data-center/cobol-brain-drain--survey-results.html).
  Ok, man will COBOL ja loswerden. Aber ... ;-)

- Static-Typing bis zum Abwinken. Aber eben z.B. keine Dangling Pointer.

- Usw. usw.

Grüße
Andreas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.