/MPP

Laboratory works on the Modern Programming Platforms (BSUIR, POIT:), 5th sem)

MPP

Laboratory works on the Modern Programming Platforms (BSUIR, POIT:), 5th sem)

Задача 1.

Создать класс на языке C#, который:

  • называется TaskQueue и реализует логику пула потоков;
  • создает указанное количество потоков пула в конструкторе;
  • содержит очередь задач в виде делегатов без параметров: delegate void TaskDelegate();
  • обеспечивает постановку в очередь и последующее выполнение делегатов с помощью метода void EnqueueTask(TaskDelegate task);

Задача 2.

Реализовать консольную программу на языке C#, которая:

  • принимает в параметре командной строки путь к исходному и целевому каталогам на диске;
  • выполняет параллельное копирование всех файлов из исходного каталога в целевой каталог;
  • выполняет операции копирования параллельно с помощью пула потоков;
  • дожидается окончания всех операций копирования и выводит в консоль информацию о количестве скопированных файлов.

Задача 3.

Создать класс на языке C#, который:

  • называется Mutex и реализует двоичный семафор с помощью атомарной операции Interlocked.CompareExchange.
  • обеспечивает блокировку и разблокировку двоичного семафора с помощью public-методов Lock и Unlock.

Задача 4.

Реализовать консольную программу на языке C#, которая:

  • принимает в параметре командной строки путь к сборке .NET (EXE- или DLL-файлу);
  • загружает указанную сборку в память;
  • выводит на экран полные имена всех public-типов данных этой сборки, упорядоченные по пространству имен (namespace) и по имени.

Задача 5.

Создать на языке C# статический метод класса Parallel.WaitAll, который:

  • принимает в параметрах массив делегатов;
  • выполняет все указанные делегаты параллельно с помощью пула потоков;
  • дожидается окончания выполнения всех делегатов. Реализовать простейший пример использования метода Parallel.WaitAll.

Задача 6.

Создать на языке C# обобщенный (generic-) класс DynamicList, который:

  • реализует динамический массив с помощью обычного массива T[];
  • имеет свойство Count, показывающее количество элементов;
  • имеет свойство Items для доступа к элементам по индексу;
  • имеет методы Add, Remove, RemoveAt, Clear для соответственно добавления, удаления, удаления по индексу и удаления всех элементов;
  • реализует интерфейс IEnumerable. Реализовать простейший пример использования класса DynamicList на языке C#.