Einfache Scala-Darstellerfrage

8

Ich bin mir sicher, dass das eine sehr einfache Frage ist, aber es ist peinlich zu sagen, dass ich mich nicht darum kümmern kann:

Ich habe eine Liste von Werten in Scala. Ich möchte mit Hilfe von Aktoren einige (externe) Aufrufe mit jedem Wert parallel durchführen.

Ich möchte warten, bis alle Werte verarbeitet wurden, und dann fortfahren.

Es gibt keine gemeinsamen Werte, die geändert werden.

Könnte jemand beraten?

Danke

    
7zark7 02.04.2010, 03:16
quelle

2 Antworten

17

Es gibt eine Scala-Klasse, in der Schauspieler eingesetzt werden, die genau auf diese Art von Problem zugeschnitten ist: Futures. Dieses Problem würde so gelöst werden:

%Vor%

Da gehst du hin. Genau das.

    
Daniel C. Sobral 02.04.2010, 04:50
quelle
9

Erzeuge Arbeiter und frage sie nach Futures mit !! ; dann lese die Ergebnisse ab (die berechnet werden und parallel eingehen, sobald sie fertig sind; du kannst sie dann verwenden). Zum Beispiel:

%Vor%

Das macht eine sehr billige Berechnung - Berechnung der Länge einer Zeichenkette - aber Sie können etwas teures dort setzen, um sicherzustellen, dass es wirklich parallel geschieht (der letzte Fall in diesem Fall sollte der Akt-Block sein, mit zu antworten die Antwort). Beachten Sie, dass wir auch einen Fall für den Arbeiter einschließen, um sich selbst zu schließen, und wenn wir fertig sind, sagen wir den Arbeitern, dass sie herunterfahren sollen. (In diesem Fall wird der Worker durch eine Nicht-Zeichenfolge beendet.)

Und wir können das ausprobieren, um sicherzustellen, dass es funktioniert:

%Vor%     
Rex Kerr 02.04.2010 03:40
quelle

Tags und Links