package cmd import ( "context" "fmt" "show-rss/src/pool" ) func Main(ctx context.Context) error { ctx, can := context.WithCancel(ctx) defer can() foos := map[string]func() error{ "server": func() error { return server(ctx) }, "cron": func() error { return cron(ctx) }, } p := pool.New(len(foos)) defer p.Wait(ctx) for k, foo := range foos { foo := foo if err := p.Go(ctx, k, foo); err != nil { return fmt.Errorf("failed to go %s: %v", k, err) } } return p.Wait(ctx) }