https://studygolang.com/articles/10952
希望解读一下他的代码,感激不尽!!!
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
从这里提供的代码看,肯定编译不通过~
https://studygolang.com/articles/10952 这边文章 有完整的,我是一直觉得代码有毛病??
看着是,当然,也有可能作者写文章,代码是部分,不全~
https://medium.com/smsjunk/handling-1-million-requests-per-minute-with-golang-f70ac505fcaa 这是老外首发的
抛开细节。 我感觉他的工作池那块的逻辑就有问题吧??能否解答一下?
他是采用master-work模式来实现的,他给的部分代码是没问题的,只是有点难理解,简单的就是work的几个goroutine的channel放入pool中,master从pool中取出一个channel,往里面写入值,然后work的goroutine从channel中取值,进行相应的操作,之后再将这个channel放入pool中等待下一次有值进行计算
自己调一下就可以了, https://github.com/ronow2cn/dispatch-worker
可以肯定告诉你的是,pool 那块没问题的,它只不过写得比较抽象,我有另外一种写法
run 方法里应该是这个 NewWorker(d.WorkerPool) 而不是NewWorker(d.pool)
func (self *Payload) Upload() { //fmt.Println("id:", self.Id) count++ fmt.Println("JobQueue", int32(len(JobQueue)), count) } 这里的打印好像不会显示出来吧 ,意义在哪里》?
忽略!!!没有删除功能好尴尬 我已经看到了
#7楼 @ronow2cn func (self *Payload) Upload() { //fmt.Println("id:", self.Id) count++ fmt.Println("JobQueue", int32(len(JobQueue)), count) } 这里的打印好像不会显示出来吧 ,意义在哪里》?
upload 模仿 例子的上传功能,这里打印,只是看执行了多少次。
#10楼 @kaxikaxi upload 模仿 例子的上传功能,这里打印,只是看执行了多少次。
恩 已经完全 弄明白了 TNKS
`单行代码`
从这里提供的代码看,肯定编译不通过~
https://studygolang.com/articles/10952 这边文章 有完整的,我是一直觉得代码有毛病??
看着是,当然,也有可能作者写文章,代码是部分,不全~
https://medium.com/smsjunk/handling-1-million-requests-per-minute-with-golang-f70ac505fcaa 这是老外首发的
抛开细节。 我感觉他的工作池那块的逻辑就有问题吧??能否解答一下?
他是采用master-work模式来实现的,他给的部分代码是没问题的,只是有点难理解,简单的就是work的几个goroutine的channel放入pool中,master从pool中取出一个channel,往里面写入值,然后work的goroutine从channel中取值,进行相应的操作,之后再将这个channel放入pool中等待下一次有值进行计算
自己调一下就可以了, https://github.com/ronow2cn/dispatch-worker
可以肯定告诉你的是,pool 那块没问题的,它只不过写得比较抽象,我有另外一种写法
run 方法里应该是这个 NewWorker(d.WorkerPool) 而不是NewWorker(d.pool)
func (self *Payload) Upload() { //fmt.Println("id:", self.Id) count++ fmt.Println("JobQueue", int32(len(JobQueue)), count) } 这里的打印好像不会显示出来吧 ,意义在哪里》?
忽略!!!没有删除功能好尴尬 我已经看到了
upload 模仿 例子的上传功能,这里打印,只是看执行了多少次。
恩 已经完全 弄明白了 TNKS