и не должен падать?
🤔 а как они должны попадать туда? извиняюсь за глупые вопросы, но я совсем не программист и мой потолок это писать скриптики, левым глазом смотря на стаковерфлоу) оформлял пример как https://gobyexample.com/worker-pools то есть hosts == jobs dataOut == result
ну как то должны наверное попадать? вы же как то этой штукой пользоваться собираетесь?) Например, веб сервер. На него кидаем в json список доменов, он их парсит, результат складывает в базу. По классике -> складываем задачи в очередь, воркеры достают оттуда, обрабатывают. Очередью может быть канал впринципе. запустили при старте пулл воркеров, они ждут когда в очередь прилетят задачи. мы закидываем в эту очередь-канал таски. они парсят данные предположим и сохраняют. Если хотим хранить пачками, полученные данные сохраняем в какое-то временное хранилище. допустим хотим по 20 штук. делаем массив на 20 штук. можно сделать чтоб отдельная горутина собирала результаты и набивала это хранилище. потом когда наполнили, сохранили сразу пачку. хранилище очистили
это я понимаю, я просто получаю из канала результат и сразу его индексирую в бд, мне было просто интересно по какой причине возможна такая ситуация, что программа не завершается после отработки всхе данных канал который я наполняю тасками после этого закрывается
это пример для песочницы. в реальности, если потоковая обработка данных, мы ждем еще таски и не закрываем ничего)
Мне же необходимо завершить программу, я конечно могу задать какой то принт о том что все отработано и os.Exit(1) в конце функции
в примере магическая numJobs не просто так. Потому что огромная разница между for a := 1; a <= numJobs; a++ { <-results } и for result := range results { }
ага, вон оно как🤔 а как можно было бы сделать чтобы и все элементы с массива стянуть и магический прием этот сработал😁
numJobs = len(domains)
так это же счетчик получится обычный а мне надо собирать элементы с массива и их в таски отправлять
Обсуждают сегодня