2016-10-09 2 views
3

Ich bin neu in Scala und versuchte, einige parallele Konstrukte (Future im Besonderen) zu verwenden.Was ist der Ausführungskontext in Scala?

Ich fand einen impliziten Parameter vom Typ ExecutionContext. IMO, es ist etwas ähnlich (und vielleicht abstrakter) als das Konzept des Thread-Pools. Ich habe versucht, es durch documentation zu lernen, aber ich kann keine klare und detaillierte Einführung darüber finden.

Könnte jemand bitte erklären, was genau Ausführungskontext in Scala ist? Und was ist der Zweck, Ausführungskontext in die Sprache einzuführen?

Danke!

+1

Siehe http://docs.scala-lang.org/overviews/core/futures.html – engineerC

+1

Denken Sie an einen Ausführungskontext als Interpreter von asynchronen Anweisungen (Futures), die entscheiden, wann und wie lange sie ausgeführt werden sollen. Wenn Sie mehr Erklärung wünschen, sehen Sie Viktor Klang's großes Gespräch darüber https://youtu.be/K9lt6yjuzbM – Yawar

+0

@engineerC, Danke, eigentlich ist das der Link, den ich in meine Frage stelle. Aber ich denke, es erklärt das Konzept nicht wirklich klar. –

Antwort

3

Die Grundidee ist ziemlich einfach: Sie haben einen Rückruf, der irgendwann ausgeführt wird. Auf welchen Thread wird es ausgeführt? Der aktuelle? Ein neuer? Einer aus einem Pool? Das muss der Ausführungskontext entscheiden. Der Standardwert (ExecutionContext.global) verwendet Threads aus einem globalen Pool (wobei die Anzahl der Threads von der Anzahl der verwendeten CPU-Kerne abhängt).

Unter anderen Umständen möchten Sie möglicherweise einen anderen Kontext verwenden. Zum Beispiel können Akka-Akteure ihren Dispatcher als einen Ausführungskontext verwenden.

Verwandte Themen