-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Нужно хранить структуры горутин, которые будут иметь Контекст, отмену, функцию, родителя(группу). Такое дерево может останавливать группы горутин по сигналу из юзер спейса, перезапускать. Можно останавливать группы или добавлять к ним горутины. Это механизм оркестрации задач в кернеле.
Можно взять container/heap. Или map[*parent][]*children
Обходя список мы будем завершать горутины. Начиная с корня или с любого узла с текстовым названием.
Таким образом мы построим все запущенные подсистемы и будем контролировать их работоспособность из единой точки управления. Чего нет в го рантайме по умолчанию.
Можно записывать данные в go-memdb и прописывать на изменения данных в дереве.
Список сервисов не связан со списком горутин, или связан, надо подумать.
Сервисы порождают горутины. Поэтому группа горутин это сервис. Завершая сервис завершается его группа. Если сервис запускает сервис с горутинами то выключение корня в этой системе завершает все дочерние сервисы.