2016-04-19 4 views
1

Dies wird Verfahren zur Aufnahme сertain Art der Aufgabe von Host:SimGrid. Erhalten Sie nur bestimmte Art von Aufgabe

task = Task.receive(String mailbox); 
    if (task instanceof SomeTask): 
     SomeTask sometesk = (SomeTask) task; 
     // Do something 

Aber ist es eine Möglichkeit, direkt zu empfangen sometask wie sometask = Sometask.receive(String mailbox)?

Antwort

1

Filtern der Aufgaben, die Sie erhalten möchten, ist in Java nicht so entwickelt wie in der C-Version von MSG (noch).

Verwenden Sie Anthere Mailbox, um die Aufgaben nicht zu mischen, es wird die Schwierigkeit vermeiden, sie danach zu sortieren.

Es gibt kein einfaches Beispiel in SimGrid-Beispielen, aber mehrere Anwendungen verwenden diese Funktion. Zum Beispiel verwendet das Beispiel bittorrent (das eindeutig nicht trivial ist) ein Postfach für die regulären Kommunikationen, die für den aktuellen Host bestimmt sind, und ein anderes Postfach, um Nachrichten vom Tracker zu empfangen. Auf diese Weise können Sie keine Nachricht von einem zufälligen Peer erhalten, wenn Sie eine Nachricht vom Tracker erwarten.

Verwandte Themen