-
Используя TPL создайте длительную по времени задачу (на основе Task) на выбор:
-
поиск простых чисел (желательно взять «решето Эратосфена»);
-
перемножение матриц;
-
умножение вектора размера 100000 на число;
-
создание множества Мандельброта;
-
другой алгоритм.
-
-
Выведите идентификатор текущей задачи, проверьте во время выполнения — завершена ли задача и выведите ее статус.
-
Оцените производительность выполнения используя объект Stopwatch на нескольких прогонах. Дополнительно: Для сравнения реализуйте последовательный алгоритм.
-
Реализуйте второй вариант этой же задачи с токеном отмены CancellationToken и отмените задачу.
-
Создайте три задачи с возвратом результата и используйте их для выполнения четвертой задачи. Например, расчет по формуле.
-
Создайте задачу продолжения (continuation task) в двух вариантах:
-
C ContinueWith - планировка на основе завершения множества предшествующих задач;
-
На основе объекта ожидания и методов GetAwaiter(), GetResult().
-
-
Используя Класс Parallel распараллельте вычисления циклов For(), ForEach(). Например, обработку (преобразования) последовательности, генерация нескольких массивов по 1000000 элементов, быстрая сортировка последовательности, обработка текстов. Оцените производительность по сравнению с обычными циклами.
-
Используя Parallel.Invoke() распараллельте выполнение блока операторов.
-
Используя Класс BlockingCollection реализуйте следующую задачу: Есть 5 поставщиков бытовой техники, они завозят уникальные товары на склад (каждый по одному) и 10 покупателей — покупают все подряд, если товара нет — уходят. В вашей задаче: спрос превышает предложение. Изначально склад пустой. У каждого поставщика своя скорость завоза товара. Каждый раз при изменении состоянии склада выводите наименования товаров на складе.
-
Используя async и await организуйте асинхронное выполнение метода.