跨平台
协程的好处:
 跨体系架构
 无需线程上下文切换的开销
 无需原子操作锁定及同步的开销。代码实现
package main  import (  "fmt"  "time" )  type Task struct {  f func()error //一个task中有具体的业务,业务名叫f } func NewTask(arg_f func()error) *Task{  t:=Task{   f:arg_f,   }  return &t } func(t *Task)Execute(){  t.f() }  type Pool struct {  EntryChannel chan *Task  JobChannel chan *Task //协成池中的最大worker数量  worker_num int } func NewPool(cap int) *Pool{  //创建一个Pool  p:=Pool{   EntryChannel:make(chan *Task),  JobChannel:make(chan *Task),  worker_num:cap,  }  return &p } //创建一个work去工作 func(p *Pool)worker(worker_ID int){  //永久的jobchannel取任务  for task:=range p.JobChannel{   task.Execute()  fmt.Println("work ID",worker_ID,"执行完了一个任务")  } }  func(p *Pool)run(){  //根据work_num来创建worker工作  //从entrychananel去工作  for i:=0;i<p.worker_num;i++{   //每个worker都应该是一个goroutioe   go p.worker(i)  }  for task:=range p.EntryChannel{   p.JobChannel<-task  } }  func main() {  //创建一些任务  t := NewTask(func() error {   fmt.Println(time.Now())   return nil   })  //创建一个Pool  p := NewPool(4)  task_num:=0  go func() {   for {    p.EntryChannel <- t    task_num+=1    fmt.Println("当前一共执行了",task_num,"个任务")   }  }() p.run() }  
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)