In der Informatik Task
ist a eine Zukunft oder ein Versprechen . (Einige Leute verwenden diese beiden Begriffe synonym, andere verwenden sie unterschiedlich, niemand kann sich auf eine genaue Definition einigen .) Grundsätzlich ein Task<T>
"Versprechen", Ihnen einen zurückzugeben T
, aber momentan nicht, Schatz, ich bin ein bisschen beschäftigt, warum nicht kommst du später zurück
A Thread
ist ein Weg, dieses Versprechen zu erfüllen. Aber nicht jeder Task
braucht einen brandneuen Thread
. (Tatsächlich ist das Erstellen eines Threads oft unerwünscht, da dies viel teurer ist als die Wiederverwendung eines vorhandenen Threads aus dem Threadpool. Mehr dazu gleich.) Wenn der Wert, auf den Sie warten, aus dem Dateisystem stammt oder a Datenbank oder das Netzwerk, dann muss kein Thread herumstehen und auf die Daten warten, wenn andere Anforderungen bearbeitet werden können. Stattdessen Task
registrieren sie möglicherweise einen Rückruf, um die Werte zu erhalten, wenn sie bereit sind.
Insbesondere Task
sagt das nicht aus , warum es so lange dauert, bis der Wert zurückgegeben wird. Es kann sein, dass das Berechnen lange dauert, oder dass das Abrufen lange dauert. Nur im ersteren Fall würden Sie a verwenden, um a Thread
auszuführen Task
. (In .NET sind Threads verdammt teuer, daher möchten Sie sie im Allgemeinen so weit wie möglich vermeiden und sie wirklich nur verwenden, wenn Sie mehrere umfangreiche Berechnungen auf mehreren CPUs ausführen möchten. In Windows wiegt ein Thread beispielsweise 12 KiByte ( Ich denke), unter Linux wiegt ein Thread nur 4 KiByte, in Erlang / BEAM sogar nur 400 Byte. In .NET ist es 1 MiByte!)