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
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.
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:
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%