.NET 4 містить новий простір імен System.Threading.Tasks, який містить класи, що абстрагують функціональність потоків. Використовуйте ThreadPool у фоновому режимі. Завдання — це робота підрозділу, яку слід виконати. Робота цього пристрою може виконуватися в окремому потоці або завдання запускатися синхронно, що вимагає очікування основного налаштуваного потоку. Використання завдань дає не лише рівень абстракції, а й дає великий контроль над основними потоками. Завдання пропонують велику гнучкість у плануванні необхідної роботи. Наприклад, ви можете визначити безперервне завдання — яку роботу слід виконати після завершення завдання. Це може стати вирішальною різницею між успішним і неуспішним завданням. Крім того, завдання можна організовувати за ієрархією. Наприклад, батьківське завдання може створити нове дочірнє завдання. Це створює залежність, і якщо скасувати батьківське завдання, його дочірнє завдання також буде скасовано.
Сьогодні популярно використовувати методи виконання завдань, і це висока продуктивність, і я не знаю, яка саме продуктивність завдань.
Я сам тестував Task і Thread, і відчуваю, що Task дуже повільний, що суттєво впливає на продуктивність, а тестовий код виглядає так:
Ми повторюємо метод 1000 разів, потім метод блокується на 100 мілісекунд, і результат тесту виглядає так:
Результат:
Виконання потоку займає 188 мілісекунд
Виконання завдання займає 14 671 мілісекунду
Різниця у швидкості між ними становить 78 разів!!
Завдання дуже повільно, не знаю, чому це відбувається, чи щось не так із моїм тестовим кодом чи що? Сподіваюся, ви зможете пояснити, чому так відбувається...
|