.NET 4 включва ново пространство от имена, System.Threading.Tasks, което съдържа класове, абстрахиращи функционалността на нишките. Използвайте ThreadPool на заден план. Задачата представлява работата на единица, която трябва да бъде изпълнена. Работата на този уред може да се изпълнява в отделна нишка или задача да се стартира синхронно, което изисква изчакване на основната нишка за настройка. Използването на задачи не само ви дава абстракция на слой, но и много контрол върху основните нишки. Задачите предлагат голяма гъвкавост при планирането на работата, която трябва да бъде свършена. Например, можете да дефинирате непрекъсната задача – каква работа трябва да се свърши след като дадена задача е завършена. Това може да направи разликата между успешна и неуспешна задача. Освен това задачите могат да бъдат подредени в йерархия. Например, родителска задача може да създаде нова дъщерна задача. Това създава зависимост, така че ако отмениш родителската задача, и нейната дъщерна задача ще бъде отменена.
В днешно време е популярно да се използват методи за изпълнение на задачи, и това е високопроизводително, и не знам къде точно е производителността на задачата.
Тествах Task и Thread лично и смятам, че Task е много бавен, което силно влияе на производителността, а тестовият код е следният:
Преминаваме през метода 1000 пъти, след което методът блокира за 100 милисекунди, и резултатът от теста е следният:
Резултат:
Изпълнението на нишките отнема 188 милисекунди
Изпълнението на задачата отнема 14 671 милисекунди
Разликата в скоростта между двете е 78 пъти!!
Задачата е много бавна, не знам защо се случва това, има ли нещо нередно с тестовия ми код, или какво? Надявам се да можеш да обясниш защо се случва това...
|