Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = ["executor.go"],
importpath = "go-common/app/job/main/growup/service/ctrl",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = ["//library/log:go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,40 @@
package ctrl
import (
"context"
"reflect"
"runtime"
"sync"
"go-common/library/log"
)
func NewUnboundedExecutor() *UnboundedExecutor {
ctx := context.Background()
return &UnboundedExecutor{
ctx: ctx,
}
}
type UnboundedExecutor struct {
wg sync.WaitGroup
// for future extension
ctx context.Context
}
type Executor interface {
Submit(bizFunc ...func(ctx context.Context))
}
func (executor *UnboundedExecutor) Submit(bizFunc ...func(c context.Context)) {
for _, biz := range bizFunc {
pc := reflect.ValueOf(biz).Pointer()
funcName := runtime.FuncForPC(pc).Name()
executor.wg.Add(1)
go func(funcName string, biz func(ctx context.Context)) {
defer executor.wg.Done()
log.Info("Exec Task %s", funcName)
biz(executor.ctx)
}(funcName, biz)
}
}