登录
首页 >  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 := 
<p><code>MaxWorker</code>在调度服务的工作数量之后,工人池(chan chan
job)不会耗尽吗?由于在第一次调用<code>第一种类型后没有从通道中拉取并且工作通道没有被补充?<code>dispatcher.Run()</code>还是我错过/误读了什么?WorkerPool
如何获得可用工作渠道的补充?</code></p>
<pre class="brush:go;toolbar:false">go func(job Job) {
            // try to obtain a worker job channel that is available.
            // this will block until a worker is idle
            jobChannel := 
<h2 class="daan">
    正确答案
</h2>
<p>如果你仔细阅读工人的代码,你会注意到</p>
<pre class="brush:go;toolbar:false">w.WorkerPool 
<p>每次循环开始,worker本身的channel都会被放回</p>
<p>我复制下面的整个函数:</p>
<pre class="brush:go;toolbar:false">func (w Worker) Start() {
    go func() {
        for {
            // register the current worker into the worker queue.
            w.WorkerPool <p>今天关于《工作线程池》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!</p>
声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>