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

网站怎么做域名跳转房山网站制作

网站怎么做域名跳转,房山网站制作,网站设计项目,石家庄网站建设刘华大概流程就是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.yayakq.cn/news/127374/

相关文章:

  • 重庆顶呱呱网站建设基层建设收录网站
  • 专做火影黄图的网站微信怎样建网站
  • 青岛工程建设监理公司网站重庆网站制作哪家好
  • 企业多语言网站开源展览设计制作公司
  • 中国建设劳动学会是假网站吗百度seo优化关键词
  • 网站维护明细报价表苏州市建设中心网站
  • 网站建设案例算命网站上海wordpress
  • 织梦开发小说网站教程wordpress素材程序
  • 中国没公司怎么做网站广州地产网站设计
  • 织梦怎么做网站地图北京装修公司全包价格
  • 做网站商城多少钱终身免费网站建设
  • 网站备案更改吗大学校园网络规划设计方案
  • 旅游网站开发与设计论文房地产网页设计
  • 建设邮费自己的网站_要不要购买服务器的如何构建网站
  • 网站建设ppt谷歌网站排名
  • 天推广人的网站宁波高端网站设计价格
  • 旅游网站开发的目的和意义郑州市网站建设公司
  • 手机手机网站制作企业网上管理系统
  • 铁道部售票网站多少钱建设北京不限购二环小公寓
  • 怎么做网站弹窗通知社区网站建设申请报告
  • 海尔集团企业网站建设分析企业网站的建设包括哪些
  • 厦门做网站优化的公司西安网站seo分析
  • 小网站如何做wordpress百度云盘插件
  • flask 电影网站开发qq空间登录
  • 太原网站建设口碑推荐新城免费做网站
  • 山西响应式网站建设哪家有企业名录搜索软件排名
  • 网站建设验收意见企业微网站哪个版本好
  • 深圳搭建p2p网站广州分公司注册
  • 百度云建站WordPress写代码的软件
  • 做网站的会计分录网络招商