当前位置: 首页 > news >正文

logo接单平台seo诊断的网络问题

logo接单平台,seo诊断的网络问题,最近火爆的新闻大事,广西北海联友建设网站管理大概流程就是job -> JobQueue调度器循环获取JobQueue &#xff0c;获取到的job &#xff0c;再去异步获取等待可用的 worker&#xff0c;取出 chan Job,将job 写入改worker的 chan Jobworker 处理任务&#xff0c;先处理 case job : <-w.JobChannel: 处理完成后再将 chan…
  • 大概流程就是job -> JobQueue
  • 调度器循环获取JobQueue ,获取到的job ,再去异步获取等待可用的 worker,取出 chan Job,将job 写入改worker的 chan Job
  • worker 处理任务,先处理 case job := <-w.JobChannel: 处理完成后再将 chan Job 写入到worker 里面,等待调度去取调用
package mainimport ("log""os""strconv""sync""time"
)var (MaxWorker intMaxQueue  intJobQueue  chan Job
)func init() {var err errorMaxWorker, err = strconv.Atoi(os.Getenv("MAX_WORKERS"))if err != nil {MaxWorker = 5 // 默认值}MaxQueue, err = strconv.Atoi(os.Getenv("MAX_QUEUE"))if err != nil {MaxQueue = 10 // 默认值}JobQueue = make(chan Job, MaxQueue)
}type Payload struct {// Payload的属性
}func (p *Payload) UploadToS3() error {// 模拟上传操作log.Println("Uploading to S3")return nil
}type Job struct {Payload Payload
}type Worker struct {WorkerPool chan chan JobJobChannel chan Jobquit       chan bool
}func NewWorker(workerPool chan chan Job) Worker {return Worker{WorkerPool: workerPool,JobChannel: make(chan Job),quit:       make(chan bool)}
}func (w Worker) Start() {go func() {for {w.WorkerPool <- w.JobChannelselect {case job := <-w.JobChannel:if err := job.Payload.UploadToS3(); err != nil {log.Printf("Error uploading to S3: %s", err)}case <-w.quit:return}}}()
}func (w *Worker) Stop() {go func() {w.quit <- true // 通知工作线程停止}()
}type Dispatcher struct {WorkerPool chan chan JobmaxWorkers intworkers    []Worker  // 新增:用于跟踪所有工作线程quit       chan bool // 用于停止dispatch循环
}func NewDispatcher(maxWorkers int) *Dispatcher {return &Dispatcher{WorkerPool: make(chan chan Job, maxWorkers),maxWorkers: maxWorkers,workers:    make([]Worker, 0, maxWorkers),}
}func (d *Dispatcher) Runs() {for i := 0; i < d.maxWorkers; i++ {worker := NewWorker(d.WorkerPool)d.workers = append(d.workers, worker) // 跟踪新创建的工作线程worker.Start()}go d.dispatch()
}func (d *Dispatcher) dispatch() {for {select {// 从JobQueue中获取一个jobcase job := <-JobQueue:go func(job Job) {// 尝试获取一个可用的worker job channel,阻塞直到有可用的workerjobChannel := <-d.WorkerPool// 分发job到worker job channel中jobChannel <- job}(job)case <-d.quit:// 退出return}}
}func (d *Dispatcher) StopAllWorkers() {var wg sync.WaitGroupfor _, worker := range d.workers {wg.Add(1)go func(w Worker) {w.Stop() // 停止工作线程wg.Done()}(worker)}wg.Wait() // 等待所有工作线程安全退出
}func (d *Dispatcher) Stop() {d.quit <- trued.StopAllWorkers()
}func main() {dispatcher := NewDispatcher(MaxWorker)dispatcher.Runs()// 模拟作业提交for i := 0; i < 20; i++ {payload := Payload{ /* ... */ }job := Job{Payload: payload}JobQueue <- job}// 等待一段时间,以便可以看到工作的完成time.Sleep(10 * time.Second)
}
http://www.hengruixuexiao.com/news/28375.html

相关文章:

  • 网页制作成都seo网站推广什么意思
  • 做网站宁波有什么的网络公司全网营销推广服务
  • 永久免费的网站哪个好微信软文推广怎么做
  • 目前做网站需要什么cms网站排名优化专业定制
  • 通过门户网站做单点登录SAP短视频seo推广隐迅推专业
  • 企业产品网站模板口碑营销的特点
  • 惠州高端网站建设网站点击排名优化
  • 郑州公司网站苏州seo排名优化课程
  • 金融网站建设成功案例有哪些网络营销公司
  • 政府网站建设进程乔拓云智能建站官网
  • 北京网站建设哪家公司好护肤品推广软文
  • 建网站安全今日财经新闻
  • 电商网站的支付模块怎么做今日最新新闻摘抄
  • 苏州网站制作及推广品牌全网推广
  • 本地电脑做视频网站 外网连接代写新闻稿
  • 汕头免费建站公司北京网络营销推广公司
  • 自己做的手机网站怎么测试郑州网站seo
  • 阿拉善盟seo苏州seo关键词优化方法
  • 武汉光谷网站建设重庆seo教程博客
  • 衡水网站建设多少钱企业网站制作费用
  • wordpress 邮件美化英文seo是什么意思
  • 北京网站推广助理怎么交换友情链接
  • 地产网站建设方案技能培训班有哪些课程
  • 黄骅港天气预报一周7天网站seo推广公司靠谱吗
  • 邢台哪个公司做网站广告软文
  • 盱眙有做网站开发的吗百度提交入口网址截图
  • 厨具 技术支持东莞网站建设网站建设报价单
  • 企查查官网在线查询seo网站诊断分析报告
  • 全国小学网站建设百度手机助手下载
  • 深圳宝安上市公司网站建设报价如何做个人网站