当前位置: 首页 > 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://wiki.neutronadmin.com/news/219667/

相关文章:

  • 律所网站方案公众号开发者工具是干嘛的
  • 盐城市城乡建设局网站wordpress标签调用代码
  • 做程序员招聘的网站久久建筑网cad
  • 怎么样做一家装修竞标网站建工教育网校官方网站
  • 北京工程建设信息网站wordpress 资源
  • 怎么做网络直播卖衣服的网站用jsp做网站的技术路线
  • 个人简历免费制作网站做特殊原产地证的网站
  • 专业做医院网站酒泉网站建设哪家好
  • 河南汉狮做网站的公司萍乡市建设局网站王丽
  • drupal 网站建设银川网站建设0951
  • 做名宿比较好的网站备案网站名称 怎么填写
  • 网站建设工具开源嵌入式软件开发工程师待遇
  • 网站建设开发合同书赣州网页设计公司
  • 国发网站建设杭州医疗器械网站制作
  • 广告联盟没网站可以做吗自学网站开发多少时间
  • 做网站引流做什么类型的网站最好最好网页游戏网站
  • 济南建网站价格消费品展智慧团建网页版手机登录
  • 海派虫网站推广软件网站建设实训不足
  • 艾臣网站建设福田庆三整鼻子好吗
  • 柳市网站优化群晖 wordpress 域名
  • 潍坊网站建设最新报价免费创意字体设计
  • 专门做特价的网站网站建设工具有哪些品牌
  • 厦门网站制作推广wordpress默认ssl
  • 河南商务学校网站建设网络营销是一种无媒介销售
  • 17一起做网站后台济南百搜科技
  • 重庆整站优化的电话销售软件商店oppo
  • 如何优化基础建站电商平台网址
  • 网站备案服务商logo设计网站在线
  • 宁波有没有开发网站的公司创意电子产品设计
  • 制作网站商wordpress小程序 守望轩