当前位置: 首页 > 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/377870/

相关文章:

  • 凡客建站wordpress设置tdk
  • 网站开发技能有哪些vi设计网站大全
  • 做的网站怎么上传到网上运行微信官网网站
  • 网站打开空白页上海外贸soho网站建设
  • 代码编辑器做热点什么网站好临淄招聘信息最新招聘信息
  • 赤壁市建设工程造价信息价网站查询青岛企业网站制作公司
  • 搬瓦工如何搭建做网站wordpress开发网上商城
  • 申请学校网站建设申请书中小网站 架构
  • 做网站需要什么技术员线上广告平台
  • 有关网站开发的国外书籍wordpress制作翻译
  • 手表网站错误怎么办有没有教做零食的网站
  • 如何做个免费的网站郑州网站建设优化企业
  • 深圳做网站那家公司好多语种外贸网站管理系统
  • 企业网站建设xplogo温州外贸网站建设
  • 新网站一般多久收录哪个网站专业做饲料
  • 深圳设计网站建设济宁市中网站建设
  • 网站建设技术包括哪些方面软件学校网站模板下载
  • 网站如何建设数据库建行网站首页登录
  • 网站建设源码安装教程网站换域名怎么办
  • 手机网站模板网wordpress打赏key插件
  • html网站开发实用技术网页建设哪里最便宜
  • 网站开发课程安排wordpress 副标题 seo
  • 商业类网站免费背景图片素材网
  • 广州天河做网站asp网站配置伪静态
  • 网站导航栏注明做网站 维护费用
  • 做网站表格单边框标记专业北京网站建设公司
  • 加强网站建设与管理的通知wordpress的静态页面
  • 网站建设都包含哪些内容wordpress首页幻灯片重复显示
  • 免费1级做看网站天津建设网站的公司
  • 深圳集团网站建设报价旅游网站网页设计论文