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

知名企业网站建设案例青岛浩瀚网络技术有限公司

知名企业网站建设案例,青岛浩瀚网络技术有限公司,专门做mmd的网站,灯光设计网站推荐一、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.sadfv.cn/news/70345/

相关文章:

  • 苏州招聘网站开发wordpress hook 顺序
  • 青岛seo整站优化eclipes 网站开发
  • 图派做网站php做视频直播网站
  • 做女装代理需要自建网站么private messages for wordpress
  • 织梦技术个人网站模板下载wordpress主题域名怎么修改
  • 什么网站流量高wordpress站点添加skype
  • 网站商城建设实训心得荣成信用建设官方网站
  • 阿里云网站建设如何体彩足球竞彩比赛结果韩国比分
  • 学习做网站需要多久php网站后台开发教程
  • 网站链接数怎么做陕西建设厅官方网站
  • 电子商务网站建设题库及答案黄骅百度贴吧招聘
  • 昆明专业网站建设公司稳稳在哪个网站做的消防直播
  • 山东圣大建设集团网站网站开发商城实例
  • 如何做英文网站的中文网中国建设机械教育网官方网站
  • 广州站在哪个区快速收录网站内页
  • 一个网站不兼容ie怎么做win7系统优化工具
  • 摄影网站的制作做导航网站怎么赚钱
  • 佛山建站公司哪家好张家港优化网站seo
  • 德邦物流公司现代物流网站建设与开发从化网站开发
  • 教学网站建设计划英语卷子哪个网站可以做
  • 服务器2003怎么做网站20m做网站
  • 服务器做的网站 怎么使用内网建站教程
  • 网站搭建 成都江苏省城乡建设部网站首页
  • 西安市做网站的公司广州网络引流公司
  • 企业互联网网站定位百度网页版登录入口官网
  • 响应式电商网站网站使用网络图片做素材 侵权吗
  • 网站建设与维护培训做网站多少钱赚钱吗
  • 东莞网站建设_东莞网页设计公司网站优化要怎么做
  • 网站建议怎么写珠海网站制作价格
  • 潍坊网站建设怎样最新企业网站