Модифицируйте приложение, написанное в "Домашнем задании №1", чтобы процесс обработки данных занимал меньше времени.
- Приложение должно работать в независимом режиме. Пользователь может передавать следующую команду, не дожидаясь результатов предыдущей.
- Ускорьте работу вашего приложения. Реализуйте обработку заданий в два потока, используя один из изученных паттернов конкурентной разработки.
- Приложение должно использовать механизм блокировки (например, мьютекс) для синхронизации доступа к данным между процессами.
- Добавьте обработку системных сигналов, таких как SIGINT (Ctrl+C) и SIGTERM, чтобы корректно завершить работу приложения. При получении сигнала приложение должно завершить все задачи до выхода из консоли (graceful shutdown).
- Добавьте управление кол-вом горутин через отдельную команду для выполнения. Т.е. кол-во горутин должно изменяться динамически, без рестарта приложения.
- Добавить нотификации о начале и окончании обработки команды для каждой горутины. Реализовать в отдельной горутине.
- Для реагирования на системные сигналы вы можете использовать пакет os/signal в Go.
- Для синхронизации доступа к файлу между процессами записи и чтения вы можете использовать пакет sync и его мьютексы.
- Для работы с файлами в Go вы можете использовать пакет os или io/ioutil.
- 8 июня 23:59 (сдача) / 11 июня, 23:59 (проверка)# go