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

巧克力网站建设需求分析网站集约化建设意见

巧克力网站建设需求分析,网站集约化建设意见,.net 网站域账号自动验证码,网站个人和公司有什么区别是什么一、goroutine 池 本质上是生产者消费者模型在工作中我们通常会使用可以指定启动的 goroutine 数量-worker pool 模式#xff0c;控制 goroutine 的数量#xff0c;防止 goroutine 泄漏和暴涨一个简易的 work pool 示例代码如下#xff1a; package mainimport (fmt…一、goroutine 池 本质上是生产者消费者模型在工作中我们通常会使用可以指定启动的 goroutine 数量-worker pool 模式控制 goroutine 的数量防止 goroutine 泄漏和暴涨一个简易的 work pool 示例代码如下 package mainimport (fmttime )func worker (id int, jobs -chan int, results chan - int) {//消费者消费任务for j : range jobs {fmt.Printf(worker:%d start job:%d\n, id, j)time.Sleep(time.Second)fmt.Printf(worker:%d end job:%d\n, id, j)results - j * 2}}func main() {jobs : make(chan int, 100)results : make(chan int, 100)// 1开启3个goroutine,作为消费者消费 jobs中任务for w : 1; w 3; w {go worker(w, jobs, results)}// 25个任务生产者生产任务for j : 1; j 5; j {jobs - j}close(jobs)// 3输出结果for a : 1; a 5; a {v : -resultsfmt.Println(v)} } 二、打印奇数偶数 1、一个无缓冲管道实现 首先我们这里通过 make(chan int),开辟的通道是一种无缓冲通道所以当对这个缓冲通道写的时候会一直阻塞等到某个协程对这个缓冲通道读而这里我讲 ch - true 理解为色号给你吃它却是需要等到某个协程读了才能继续运行 package mainimport (fmtsync )var wg sync.WaitGroupfunc printJS(ch chan bool) {defer wg.Done()for i : 1; i 9; i 2 {fmt.Println(js, i) // 奇数先打印ch - true // 给偶数打印函数一个信号(需要等到某个协程读了再能继续运行)-ch} }func printOS(ch chan bool) {defer wg.Done()for i : 2; i 10; i 2 {-ch // 偶数等待奇数函数 向chan发送信号fmt.Println(os, i)ch - false // 给奇数打印函数一个信号(需要等到某个协程读了再能继续运行)} }func main() {// 新建一个无缓冲管道无缓冲管道只能一个协程写入然后另外一个协程来读取ch : make(chan bool)wg.Add(2)go printJS(ch)go printOS(ch)wg.Wait() }2、两个无缓冲管道实现 package mainimport (fmtsync )var ch1 make(chan bool) var ch2 make(chan bool) var wg sync.WaitGroupfunc go1JS() {defer wg.Done()for i : 1; i 10; i 2 {-ch1 // ch1获取数据成功就不阻塞进行下一步fmt.Println(i)ch2 - true // 向ch2发送信号打印奇数}-ch1 // 因为main函数最初向ch1放入了一个数据所以最后打印结束后取出否则死锁 } func go2OS() {defer wg.Done()for i : 2; i 10; i 2 {-ch2fmt.Println(i)ch1 - true} } func main() {wg.Add(2)go go1JS() // 打印奇数go go2OS() // 打印偶数ch1 - true // 先让奇数的协程执行wg.Wait() }三、超时控制 1、基础版 package mainimport (fmtmath/randtime )// 在 main 函数里调用给定的 rpc 方法并设置超时时间为 10 秒 // 在等待过程中如果超时则取消等待并打印 timeout 如果没有超时则打印出 rpc 的返回结果。 // rpc 方法不可以修改 func main() {ch : make(chan bool)var ret intgo func() {ret rpc()-ch}()count : 0for count 10 {if ret ! 0 {fmt.Println(ret)break}time.Sleep(time.Second)count 1}if count 10 {ch - falsefmt.Println(timeout)} }// 这是你要调用的方法可以看作一个黑盒 // 它的耗时是 1~15 秒内的随机数 // 最终返回一个随机的 int 类型 func rpc() int {cost : rand.Intn(15) 1fmt.Printf(rpc will cost %d seconds\n, cost)time.Sleep(time.Duration(cost) * time.Second)return cost }func init() {rand.Seed(time.Now().UnixNano()) }2、time.After控制超时 package mainimport (fmttime )func main() {workDoneCh : make(chan bool, 1)go func() {LongTimeWork() //这是我们要控制超时的函数workDoneCh - true // 函数正常执行结束给 chan信号正常退出}()select {case -workDoneCh: // 当协程执行完成后会向这个 channel 发送一个数据收到即可结束fmt.Println(Success!)case -time.After(3 * time.Second): //timeout到来fmt.Println(timeout) // 3s无返回超时退出} }func LongTimeWork() {time.Sleep(time.Second * 2) }
http://www.huolong8.cn/news/219667/

相关文章:

  • 免费行情网站推荐广州10大网站服务品牌
  • 彩票型网站建设做企业网站的代码
  • iis不用dns解析还有什么办法也能一个ip对应多个网站吗seo批量建站
  • 网站首页流程图网站最近不收录
  • 在中国建设工程造价管理协会网站开封市建设中专网站
  • 做网站包含的技术营销策略ppt模板
  • 减肥单页网站一流的常州网站优化
  • 新乡手机网站建设电话网站建设申请域名
  • 网站制作网址搜索引擎优化代理
  • 建设申请网站首页wordpress 主题替换
  • 电子商务在酒店管理网站建设抖音小程序定制
  • 项目经理网站开发流程做营销型网站哪家好
  • 闲鱼钓鱼网站怎么做公网ip做网站
  • 成都有实力的网站建设合肥房产网最新楼盘
  • 蚌埠做网站有哪些公司太原市住房与城乡建设厅网站
  • 湛江哪家公司建网站最好网站服务器免费吗
  • 网站备案ip查询天眼查企业信用查询
  • 四川网站建设企业网站制作江门网站制作软件
  • 一级站点和二级站点区别用手机做网站的流程
  • 公共网站怎地做网站界面诊断
  • 男女做暧网站网站彩票代理怎么做
  • html5国内网站欣赏网站字体大小合适
  • 网站有吗免费的dw网页设计图片轮播切换
  • 那个旅游网站做攻略最好app模板
  • 青岛商网站建设googleseo排名公司
  • 教育资源网站建设广州番禺网站制作推广
  • 建设企业网站一般多少钱品牌建设有哪些方面
  • 自己电脑上做网站别人访问建设工程消防设计备案哪个网站
  • 2018年企业网站优化应该怎么做吉林市城市建设学校网站
  • qq音乐的网站建设信息购物网站建设技术难点