.NET 4 obsahuje nový jmenný prostor System.Threading.Tasks, který obsahuje třídy abstrahující funkcionalitu vlákenství. Používejte ThreadPool na pozadí. Úkol představuje práci jednotky, která by měla být dokončena. Práce této jednotky může být vykonána v samostatném vlákně nebo může být synchronně zahájena úloha, což vyžaduje čekání na hlavní ladící vlákno. Používání úloh vám nejen poskytuje abstrakční vrstvu, ale také velkou kontrolu nad základními vlákny. Úkoly nabízejí velkou flexibilitu při plánování práce, která je potřeba udělat. Například můžete definovat kontinuální úkol – jakou práci by měla být provedena po dokončení úkolu. To může rozhodnout o úspěšném a neúspěšném úkolu. Navíc lze úkoly uspořádat v hierarchii. Například rodičovský úkol může vytvořit nový podřízený úkol. Tím vzniká závislost, takže pokud zrušíte rodičovský úkol, jeho podúkol bude také zrušen.
Dnes je populární používat metody provádění úkolů, jsou vysoce výkonné a nevím, kde je výkon úkolů.
Sám jsem testoval Task a Thread a mám pocit, že Task je velmi pomalý, což výrazně ovlivňuje výkon, a testovací kód je následující:
Metodu opakujeme 1000krát, pak se metoda blokuje po dobu 100 milisekund a výsledek testu je následující:
Výsledek:
Provedení vlákna trvá 188 milisekund
Provedení úkolu trvá 14 671 milisekund
Rozdíl v rychlosti mezi nimi je 78násobek!!
Úkol je velmi pomalý, nevím, proč se to děje, je něco špatně s mým testovacím kódem, nebo co? Doufám, že mi vysvětlíte, proč se to děje...
|