hitakiri
@hitakiri

Как лучше собирать данные из нескольких потоков, для последующей отправки клиенту?

Есть порядка 40 функций разбитых логически на пакеты, каждый пакет работает в отдельном потоке, так же в отдельном потоке работает вебсервер для реализации GUI(простой клиент на вебсокете). Функции очень простые - для работы с файловой системой (проверка существования файлов, копирование файлов, переименование и т.д.).
Проблема заключается в том, что каждая функция передаёт клиенту достаточно много информации разного типа. Сейчас передача реализована в виде костыля из большой структуры, которая заполняется по таймеру данными из каждой функции и в дальнейшем отправляется клиенту.
Скорее всего, есть какие-то готовые решения или паттерны для данной задачи. Но к сожалению найти решения пока не могу, возможно кто-то решал подобную задачу?
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 3
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Зачем ва Go, если вы не поняли его основную парадигму "share by communication"?
Вам тут, из того, что я понял, определённо нужны каналы. Потому что много потоков + одна структура + заполнение по таймеру навевает мысли что творится полный пихжну.
Опишите задачу получше.
Ответ написан
Комментировать
mukizu
@mukizu
Из того, что я понял это банальный https://gobyexample.com/worker-pools
Ответ написан
Комментировать
@kmg4e
Сейчас передача реализована в виде костыля из большой структуры, которая заполняется по таймеру данными из каждой функции и в дальнейшем отправляется клиенту.


Почему это костыль?
Если клиенту все эти данные нужны только сразу - то большая структура вам нужна. Никуда вы не денетесь.

Единственно, что если вы хотите как-то эффективнее распараллелить это дело то лучше писать в структуру не по таймеру, а ждать данные из разных каналов в точке сбора структуры.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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