Skip to content

N1ghtF1re/MPP-Labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPP-Labs

Modern Programming Platforms Labs

Lab 1 Task Definition

Задача 1.

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

Задача 2.

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

В каждое из заданий добавить логирование с помощью NLog или др. и unit-тесты

Lab 2 Task Definition

Задача 3.

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

Задача 4.

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

В каждое из заданий добавить логирование с помощью NLog или др. и unit-тесты

Lab 3 Task Definition

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

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

Lab 4 Task Definition

Задача 7.
Создать на языке C# статический метод класса Parallel.WaitAll,
который:
- принимает в параметрах массив делегатов;
- выполняет все указанные делегаты параллельно с помощью пула
потоков;
- дожидается окончания выполнения всех делегатов.
Реализовать простейший пример использования метода
Parallel.WaitAll.

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

Lab 5 Task Definition

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

About

Modern Programming Platforms Labs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages