Verwirrung in Bezug auf threads und wenn asynchrone Methoden sind wirklich asynchron in C#

Las ich auf async/await und wenn Task.Yield nützlich sein könnten und stieß dabei auf in diesem post. ich hatte eine Frage bezüglich der unten von diesem post:

Wenn Sie async/await, es gibt keine Garantie, dass die Methode, die Sie
rufen Sie, wenn Sie erwarten FooAsync() wird asynchron ausgeführt wird.
Die interne Implementierung ist frei, um zurückzukehren, mit einem komplett
synchron-Pfad.

Dies ist ein wenig unklar ist mir wahrscheinlich, weil die definition von asynchron-in meinem Kopf ist nicht Schlange.

In meinem Kopf, da ich vor allem UI-dev, async-code ist code, der nicht auf dem Benutzeroberflächenthread ausgeführt, sondern auf einem anderen thread. Ich denke, in dem text, den ich zitierte, ist eine Methode, die nicht wirklich async wenn es blockiert auf jeden thread (auch wenn es eine thread-pool-thread zum Beispiel).

Frage:

Wenn ich eine lange laufende Aufgabe, die CPU-gebunden (sagen wir, es ist dabei eine Menge harte Mathematik), dann ausgeführt, dass die task asynchron ausgeführt werden müssen, blockieren einige thread richtig? So etwas hat eigentlich die Mathematik zu tun. Wenn ich erwarte es dann einige thread ist blockiert.

Was ist ein Beispiel für eine wirklich asynchrone Methode und wie würden Sie eigentlich arbeiten? Sind diese beschränkt auf I/O-Operationen, die die Vorteile von einigen hardware-Fähigkeiten, so dass kein thread jemals gesperrt?

  • Die obligatorische Lektüre: blog.stephencleary.com/2013/11/there-is-no-thread.html
  • Ich mag deine Frage, aber der Titel "Asynchrone Methoden .Net/C#" ist zu allgemein, IMO.
  • Ich aktualisiert, OP ' s Frage, um genauer zu sein
  • Wenn es der CPU bestimmt dann die CPU läuft in einem thread, ja, der gesamte code läuft in einem thread. Wenn es das warten auf ein Paket aus dem Netzwerk, das ist nicht code und braucht daher nicht für die Ausführung auf einem thread. (Gibt es den code irgendwo zu starten, warten und warten Sie nicht mehr, aber die tatsächliche Wartezeit ist nicht code)
InformationsquelleAutor Flack | 2017-05-15
Schreibe einen Kommentar