问题描述
我有一个调度员,我从列表的长度开始循环查找作业的数量,但是循环时有一些未调用的索引
var members = []Member{
{ID: 1,Is: true},{ID: 2,Is: false},{ID: 3,}
numOfWorker := 2
var durationDelay time.Duration = 5000
do,_ := worker.NewDispatcher(numOfWorker)
ch := make(chan worker.MainJob,len(members))
go func(jobs int) {
for i := 0; i < jobs; i++ {
newJob := &worker.NewJob{
Final: ch,Do: func() worker.MainJob {
return worker.MainJob{ID: i,Message: "test"}
},}
do.Dispatch(newJob,durationDelay)
}
do.Await()
close(ch)
}(len(members))
for v := range ch {
fmt.Println(v)
}
当我打印ch
时
我知道了:
{1 test}
{3 test}
{3 test}
所以索引0和2不被调用,索引3是从哪里来的?成员的长度为3,因此称为0 1 2
我在这里犯错了吗?
newJob中的Do
发送到worker.MainJob的结果到Final
像这样
Final <- Do()
最后一个是chan worker.MainJob
,而Do
是一个返回worker.MainJob
的函数
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)