Ich versuche zu lernen, wie async
und let!
in F# funktionieren. Alle Dokumentationen, die ich gelesen habe, erscheinen verwirrend. Was ist der Sinn, einen async-Block mit Async.RunSynchronously auszuführen? Ist das async oder synchron? Sieht nach einem Widerspruch aus.
Die Dokumentation sagt, dass Async.StartImmediate im aktuellen Thread läuft. Wenn es im selben Thread läuft, sieht es für mich nicht sehr asynchron aus... Oder vielleicht sind Asyncs mehr wie Koroutinen als Threads. Wenn ja, wann geben sie zurück und fort?
Zitiere MS-Dokumentation:
Die Zeile des Codes, die let! verwendet, startet die Berechnung und dann wird der Thread ausgesetzt bis das Ergebnis verfügbar ist, wobei die Ausführung fortgesetzt wird.
Wenn der Thread auf das Ergebnis wartet, warum sollte ich es verwenden? Sieht aus wie ein einfacher Funktionsaufruf.
Und was macht Async.Parallel? Es empfängt eine Sequenz von Async<'T>. Warum nicht eine Sequenz von einfachen Funktionen, die parallel ausgeführt werden sollen?
Ich glaube, hier fehlt mir etwas sehr Grundlegendes. Ich denke, nachdem ich das verstanden habe, wird die gesamte Dokumentation und die Beispiele sinnvoll werden.