Знаю, что то, что я пытаюсь сделать это фигня, которую делать не стоит, но все же, такое задание лабы.
Мне нужно ограничить кол-во памяти, которое может использовать приложение и время, которое приложение(поток, дочерний процесс или Task) может выполняться. Дословно задача стоит так: "Передбачити можливість обмеження виконання програми за часом (30 хвилин) та використання пам’яті (512 Мб)"
Я вижу 2 варианта, но оба мне не очень нравятся.
1. Запускать анализ доски в Task<T>
и тогда можно будет прокинуть cancellationToken
это ограничит время. И тут возникает вопрос, а как ограничить память для Task
'a. Есть вариант дергать метод GC.GetAllocatedBytesForCurrentThread
, но это выглядит как-то костыльненько.
2. Создавать новый дочерний процесс, что выглядит не очень хорошо, т.к. процессы довольно тяжелые и не удобные. И тогда нужно будет городить, что-то для трека времени. Зато, можно дернув WinApi ограничить память.
Может, есть какой-то более лаконичный вариант, который позволит избежать оверхеда?)