Skip to content

dealeska/MPP_Labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPP_Labs

Lab 1

Задание:

  1. Создать класс который реализует логику пула потоков:
  • Создает указанное количество потоков в конструкторе.
  • Содержит очередь задач в виде делегатов без параметров.
  • Обеспечивает постановку в очередь и последующее выполнение. Возвращаемое значение void.
  1. Реализовать консольную программу, которая:
  • Принимает в параметре командой строки путь к исходному и целевому каталогам на диске.
  • Выполняет параллельное копирование всех файлов из исходного каталога в целевой.
  • Выполняет операции копирования параллельно с помощью пула потоков.
  • Дожидается окончания всех операций копирования и выводит в консоль информацию о количестве скопированных файлов.

Lab 2

Задание:

  1. Создать класс на языке C#, который:
  • называется Mutex и реализует двоичный семафор с помощью атомарной операции Interlocked.CompareExchange;
  • обеспечивает блокировку и разблокировку двоичного семафора с помощью public-методов Lock и Unlock.
  1. Создать класс на языке C#, который:
  • называется OSHandle и обеспечивает автоматическое или принудительное освобождение заданного дескриптора операционной системы;
  • содержит свойство Handle, позволяющее установить и получить дескриптор операционной системы;
  • реализует метод Finalize для автоматического освобождения дескриптора;
  • реализует интерфейс IDisposable для принудительного освобождения дескриптора.

Lab 3

Задание:

  1. Реализовать консольную программу на языке C#, которая:
  • принимает в параметре командной строки путь к сборке .NET(EXE- или DLL-файлу);
  • загружает указанную сборку в память;
  • выводит на экран полные имена всех public-методов этой сборки, упорядоченные по пространству имен (namespace) и по имени.
  1. Создать класс LogBuffer на языке C#, который:
  • представляет собой журнал строковых сообщений;
  • предоставляет метод public void Add(string item);
  • буферизирует добавляемые одиночные сообщения и записывает их пачками в конец текстового файла на диске;
  • периодически выполняет запись накопленных сообщений, когда их количество достигает заданного предела;
  • периодически выполняет запись накопленных сообщений по истечение заданного интервала времени (вне зависимости от наполнения буфера);
  • выполняет запись накопленных сообщений асинхронно с добавлением сообщений в буфер.

Lab 4

Задание:

  1. Создать статический мештод класса Parallel.WaitAll, который:
  • принимает в параметрах массив делегатов;
  • выполняет все указанные делегаты параллельно с помощью пула потоков;
  • дожидается окончания выполнения всех делегатов.
  1. Создать пользовательский атрибут с именем ExportClass, применимый только к классам, и реализовать консольную программу, которая:
  • принимает в параметре командной строки путь к сборке;
  • загружает указанную сборку в память;
  • выводит на экран полные имена всех public-типов данных этой сборки, помеченные этим атрибутом.

Lab 5

Задание:

Создать generic-класс DynamicList<T>, который:

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages