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.
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)
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.
vielleicht mal das kapitel intertaskkommunikation studieren. es ist immer etwa dasselbe, mit anderen namen. semahore, messagebox, message queue
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.