1 Star 0 Fork 24

青年 / gogo

forked from konyshe / gogo 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
TaskModel.go 953 Bytes
一键复制 编辑 原始数据 按行查看 历史
kony 提交于 2019-04-24 17:45 . 新建任务模型后自动启动
package gogo
import "reflect"
type TaskModel struct {
mEndRunning chan int
mQueue chan interface{}
mTaskClass interface{}
}
func NewTask(taskClass interface{}, count int) *TaskModel {
r := &TaskModel{make(chan int), make(chan interface{}, count), taskClass}
r.Start()
return r
}
func (c *TaskModel) Release() {
for range c.mEndRunning {
}
val := reflect.ValueOf(c.mTaskClass)
tFunc := val.MethodByName("Release")
args := make([]reflect.Value, 0)
tFunc.Call(args)
}
func (c *TaskModel) Start() {
go func() {
val := reflect.ValueOf(c.mTaskClass)
tFunc := val.MethodByName("Proc")
args := make([]reflect.Value, 1)
for data := range c.mQueue {
args[0] = reflect.ValueOf(data)
tFunc.Call(args)
}
close(c.mEndRunning)
}()
}
func (c *TaskModel) Push(data interface{}) error {
c.mQueue <- data
return nil
}
func (c *TaskModel) SendRelease() {
close(c.mQueue)
}
Go
1
https://gitee.com/qingnian369_admin/gogo.git
git@gitee.com:qingnian369_admin/gogo.git
qingnian369_admin
gogo
gogo
v2.1.25

搜索帮助