WorkerChan这个方法是从哪里向这个chan 发送数据的?

来源:2-2 内建变量类型

慕粉2233184011

2018-10-11

package scheduler

type QueuedScheduler struct {
requestChan chan engine.Request
workerChan chan chan engine.Request
}

func (s *QueuedScheduler) WorkerChan() chan engine.Request {
return make(chan engine.Request)
}

这里 workerChan()方法返回的一个chan, 但一直没有地方向这个chan 发送数据, 想知道 这个chan 是从哪接收数据的?

写回答

1回答

ccmouse

2018-10-14

它被Worker存起来了。下面是调用的地方:

for i := 0; i < e.WorkerCount; i++ {
  e.createWorker(e.Scheduler.WorkerChan(),
     out, e.Scheduler)
}

存起来以后,通过WorkerReady方法向Scheduler注册自己已经就绪来接收新的Request。

Scheduler肚子里有一个workerChan chan chan Request,就是所有调过WorkerReady的人汇报过来的chan Request。

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程