登录
首页 >  Golang >  Go问答

工作线程池

来源:Golang技术栈

时间:2023-04-11 15:59:24 271浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《工作线程池》,本文主要会讲到golang等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

在[http://marcio.io/2015/07/handling-1-million-requests-per-minute-with- golang/](http://marcio.io/2015/07/handling-1-million-requests-per-minute-with- golang/)提供的示例中,很多地方都引用了该示例。

func (d *Dispatcher) dispatch() {
for {
    select {
    case job := 

MaxWorker在调度服务的工作数量之后,工人池(chan chan job)不会耗尽吗?由于在第一次调用第一种类型后没有从通道中拉取并且工作通道没有被补充?dispatcher.Run()还是我错过/误读了什么?WorkerPool 如何获得可用工作渠道的补充?

go func(job Job) {
            // try to obtain a worker job channel that is available.
            // this will block until a worker is idle
            jobChannel := 

正确答案

如果你仔细阅读工人的代码,你会注意到

w.WorkerPool 

每次循环开始,worker本身的channel都会被放回

我复制下面的整个函数:

func (w Worker) Start() {
    go func() {
        for {
            // register the current worker into the worker queue.
            w.WorkerPool 

今天关于《工作线程池》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>