Skip to content

Multithread compression and decompression console application

Notifications You must be signed in to change notification settings

jrmnl/VeeamTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

VeeamTest

Системные требования

.NET Core 2.2 SDK или выше

Описание

Разработать консольное приложение на C# для поблочного сжатия и распаковки файлов с помощью System.IO.Compression.GzipStream.

Для сжатия исходный файл делится на блоки одинакового размера, например, в 1 мегабайт. Каждый блок сжимается и записывается в выходной файл независимо от остальных блоков.

Программа должна эффективно распараллеливать и синхронизировать обработку блоков в многопроцессорной среде и уметь обрабатывать файлы, размер которых превышает объем доступной оперативной памяти.

В случае исключительных ситуаций необходимо проинформировать пользователя понятным сообщением, позволяющим пользователю исправить возникшую проблему, в частности, если проблемы связаны с ограничениями операционной системы. При работе с потоками допускается использовать только базовые классы и объекты синхронизации (Thread, Manual/AutoResetEvent, Monitor, Semaphor, Mutex) и не допускается использовать async/await, ThreadPool, BackgroundWorker, TPL. Код программы должен соответствовать принципам ООП и ООД (читаемость, разбиение на классы и т.д.).

Параметры программы, имена исходного и результирующего файлов должны задаваться в командной строке следующим образом: GZipTest.exe compress/decompress [имя исходного файла] [имя результирующего файла] В случае успеха программа должна возвращать 0, при ошибке возвращать 1.

Примечание: формат архива остаётся на усмотрение автора, и не имеет значения для оценки качества тестового, в частности соответствие формату GZIP опционально.

About

Multithread compression and decompression console application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages