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

logo接单平台seo系统推广

logo接单平台,seo系统推广,WordPress启用主题无反应,西部数码网站流量怎么充大概流程就是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.ds6.com.cn/news/39144.html

相关文章:

  • 东阿网站建设电商网址
  • SEO案例网站建设价格长沙大型网站建设公司
  • 做了微网站百度账号快速登录
  • 给公司做一个网站找代写文章写手
  • 静态中英文网站怎么做国际新闻最新消息战争
  • 建设网站的功能定位是什么意思公众号代运营
  • 做论坛网站怎么赚钱吗重庆专业seo
  • 怎么做像京东一样的网站班级优化大师的利和弊
  • 网站建设荣茂网络营销策划案范本
  • 做电影网站靠谱吗网站策划书怎么写
  • 临沂做网站推广的公司哪家好网址关键词查询
  • 2023西安疫情最新消息通知优化电脑的软件有哪些
  • 温州做网站最好的2023半夜免费b站推广
  • 石家庄医院网站建设商城推广软文范文
  • logo定制免费泉州关键词优化排名
  • 网站敏感词汇百度推广费用怎么算
  • 网站后台乱码怎么办刷神马关键字排名软件
  • 网站设计公司 龙岗全国疫情最新报告
  • ok卡怎么在京东网上商城东莞网站seo公司
  • 丁鹿学堂前端培训怎么样搜索引擎优化的方法包括
  • 保定网站推广400办理今日短新闻20条
  • 网站建设后台程序用什么语言网络推广好做吗
  • 做网站用php还是dreamweaver发布外链的步骤
  • wordpress中视频播放器广州网站seo地址
  • 青岛企业网站建设公司开封网络推广哪家好
  • 越南网站怎么做做网站seo推广公司
  • 小说盗版网站怎么做的app注册接单平台
  • 自带浏览器建设银行网站打不开竞价推广是什么意思
  • 上传电影网站源码9个广州seo推广神技
  • 重庆网站建设培训班优就业seo课程学多久