Здравствуйте, есть проблемный скрипт
Ссылка на плайграунд
в кратце что он должен делать
1. Запускается main
2. Создается отдельная горутина convert которая сидит и слушает канал чтоб взять оттуда обьекты и передать в функицю runconvert если есть обьект то увеличиваем counter на 1, если коунтер меньше 5 если больше ниче не делаем
3. запускаем в бесконечном цикле обход директории и всех поддерикторих которые были указаны при запуске первым аргументом.
4. функция filepath.Walk вызывает на каждый найденый файл walkfunc
5. Walkfunc в свою очередь создает обьект ипихает его в канал где его уже ждут.
6. функция runconvert "отрабатывает" и уменьшает counter на 1 и атк по кругу
все идет по плану 5-6 итераций а потом вешается намертво, при этом, если мы заменим filepath.Walk простым счетчиком допустим от 1 до 1000 создаем обьект и пихаем его в канал то отрабатывает все на ура. как мне это все пофиксить?
UPD: Каунтер нужен для того чтоб runConvert ов было НЕ БОЛЕЕ 5ТИ в одно время, потмоу что если горутинф бцдцт прсото хватить все что попадет в канал они их ранконвертов в скоре наплодят по количечеству файлов, а как написано в исходнике "имитация бурной деятельности" деятельность ествтельно бурная и если пладить беконтрольно то сервак повешается пока не разгребет все а если это 10000000 файлов я потеряю его не неделю нафиг)