https://github.com/vlados1kin/modern-programming-platforms
Современные платформы программирования (часть 1) - СПП (часть 1). Modern programming platforms (part 1).
https://github.com/vlados1kin/modern-programming-platforms
bsuir bsuir-labworks c-sharp dotnet dotnet-8 dotnet-core dotnet-framework spp
Last synced: 14 days ago
JSON representation
Современные платформы программирования (часть 1) - СПП (часть 1). Modern programming platforms (part 1).
- Host: GitHub
- URL: https://github.com/vlados1kin/modern-programming-platforms
- Owner: vlados1kin
- Created: 2025-02-09T13:16:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-21T13:15:12.000Z (7 months ago)
- Last Synced: 2025-11-21T15:17:54.187Z (7 months ago)
- Topics: bsuir, bsuir-labworks, c-sharp, dotnet, dotnet-8, dotnet-core, dotnet-framework, spp
- Language: C#
- Homepage:
- Size: 32.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Современные платформы программирования
Лабораторные работы для BSUIR/БГУИР (Белорусский государственный университет информатики и радиоэлектроники).
Предмет - MPP (Modern programming platforms) / СПП (Современные платформы программирования).
## **Лабораторная работа №1**
- Создать класс `TaskQueue` на языке C#, который реализует логику пула потоков. Создает указанное количество потоков в конструкторе, содержит очередь задач в виде делегатов без параметров, обеспечивает постановку в очередь и последующее выполнение делегатов с помощью метода `NewTask` и параметра `TaskDelegate task`.
- Создать консольное приложение на языке C#, которое принимает в качестве параметров командной строки путь к исходному и целевому каталогу на диске, выполняет копирование всех файлов из исходного в целевой каталог, также выполняет это же параллельно с помощью пула потоков, дожидается окончания всех операций копирования и выводит в консоль информацию о количестве скопированных файлов.
## **Лабораторная работа №2**
- Создать класс `Mutex` на языке C#, который реализует двоичный семафор при помощи атомарной операции `Interlocked.ComapreExchange`. Обеспечивает блокировку и разблокировку двоичного семафора при помощи public методов `Lock` и `Unlock`.
- Создать класс `OsHandle` на языке C#, который обеспечивает автоматическое и принудительное освобождение заданного дескриптора ОС. Содержит свойство `Handle`, позволяющее установить и получить дескриптор. Реализует метод `Finalize` для автоматического освобождения дескриптора, а также интерфейс `IDisposable` для принудительного освобождения дескриптора.
## **Лабораторная работа №3**
- Консольная программа принимает в параметры командной строки путь к сборке .NET (-exe или -dll), загружает строку в память, выводит все имена public-типов, отсортированные по пространствам имён.
- Создать класс `LogBuffer`, который представляет собой журнал строковых сообщений. Буферизирует добавляемые одиночные сообщения и записывает их пачками в конец текстового файла на диске. Периодически выполняет запись строковых сообщений, когда их количество достигает заданного предела. Также периодически осуществляет запись накопленных сообщений по истечении заданного интервала времени не дожидаясь заполнения буфера. Также выполняет запись накопленных сообщений асинхронно с добавлением сообщений в буфер.
## **Лабораторная работа №4**
- Создать на языке C# статический метод класса `Parallel.WaitAll`, который принимает в параметре массив делегатов, выполняет все делегаты параллельно с помощью пула потоков и дожидается окончания.
- Создать на языке C# пользовательский атрибут с именем `ExportClass`, применимый только к классу. Принимает в параметре командной строки путь к сборке, загружает блок в память, выводит на экран имена паблик типов, помеченных атрибутом.
- Создать обобщённый generic-класс `DynamicList`, который реализует динамический массив с помощью обыного массива, имеет свойство count (количество элементов), свойство items для доступа к элементам по индексам, имеет методы `Add`, `Remove`, `RemoveAt`, `Clear` для добавления/удаления по индексу и удаления всех элементов, а также реализует интерфейс `IEnumerable`.