170 похожих чатов

Привет. Как мне сделать следующую програму: Нужно посчитать суму элементов

матрицы попарно (суму 1-го с последним, 2-го с n-1 и тд). Далее составить массив из сумм элементов и повторять операции до тех пор, пока массив не будет содержать один элемент - сумму всех элементов. Вообщем, суть задачи не суть важна, важно следующее: каждая операция суммирования должна проводится в отдельном потоке, и, вместо того, чтобы создавать новые горутины с каждой итерацией, желательно создать их один раз, заставить их посчитать некоторое кол-во раз и закрыть в итоге, для экономии ресурсов. В го я профан, не знаю как держать горутины постоянно открытыми, но накидал такой код, который не работает. В нем нет решения задачи, а просто пример, как я планировал работать с горутинами. Подскажите, как это можно сделать?

6 ответов

10 просмотров

https://go.dev/tour/concurrency/2

Андрій- Автор вопроса
Alexey Palazhchenko
https://go.dev/tour/concurrency/2

В примере, как я понял, создались горутины, вычислили суму, записали в канал и закрылись. И в каждой итерации придется заново создавать их. Есть вариант, чтобы они не закрывались, или это плохая практика в го?

Андрій
В примере, как я понял, создались горутины, вычисл...

Не обязательно же выходить из горутины. Можно отправлять работу (слайс в вашем случае, видимо) через канал, результат через другой канал возвращать, потом ждать новой работы, пока входящий канал не будет закрыт

Андрій- Автор вопроса
Андрій
ждать работы в бесконечном цикле, да?

for arg := range argsChannel Ни бесконечный цикл, ни select вам не нужны

Андрій- Автор вопроса
Alexey Palazhchenko
for arg := range argsChannel Ни бесконечный цикл, ...

Наверное, я не понимаю жизненный цикл горутины. Думал, что если она отработает весь код то просто завершится и сборщик мусора её удалит

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
8
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Доброе утро! Не совсем понятно как установить счетчик яндекс метрики на сайт. И потом ещё цели проставить?
Евгения
18
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Гуру, подскажите, меня уже критиковали за неумением, но и в инете я решения не нашел, тем более в доках абракадабры. В 12.1 студии появился новый тип TSQLTimeStampOffset , ест...
Delphi Photo
10
Это фейк @cruppto_newbot?
Antskup
10
Карта сайта