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

兰州做网站公司百度网络小说排行榜

兰州做网站公司,百度网络小说排行榜,手机网站菜单设计,做网站需要招什么使用两个goroutine交替打印数字与字母 题目如下: 使用两个goroutine交替打印序列,一个goroutine打印数字,另外一个goroutine打印字母,最终效果如下: 12AB34CD56EF78GH910IZ1112KL1314MN1516OP1718QR1920ST2122UV2324W…

使用两个goroutine交替打印数字与字母

题目如下:

使用两个goroutine交替打印序列,一个goroutine打印数字,另外一个goroutine打印字母,最终效果如下:

12AB34CD56EF78GH910IZ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728

解题思路:
使⽤ channel 来控制打印的进度。使⽤两个 channel ,来分别控制数字和
字⺟的打印序列, 数字打印完成后通过 channel 通知字⺟打印, 字⺟打印完成后通知数字打印,然后周⽽复始的⼯作

package mainimport ("fmt""time"
)var number, letter = make(chan bool), make(chan bool)func numberPrint() {i := 1for {<-numberfmt.Printf("%d%d", i, i+1)i += 2letter <- true}
}
func letterPrint() {i := 0str := "ABCDEFGHIZKLMNOPQRSTUVWXYZ"for {if i >= len(str) {return}<-letterfmt.Print(str[i : i+2])i += 2number <- true}
}
func main() {go numberPrint()go letterPrint()number <- truetime.Sleep(5 * time.Second)
}

注意main routine中的number<-true要写在两个go协程下面,因为定义的channel是无缓冲通道,所以当对这个缓冲通道写的时候,会一直阻塞等到某个协程对这个缓冲通道读

如果写在两个go协程上面会发生阻塞,报错
all goroutines are asleep - deadlock

关于无缓冲通道:
一次只能传输一个数据
同一时刻,同时有 读、写两端把持 channel
如果只有读端,没有写端,那么 “读端”阻塞
如果只有写端,没有读端,那么 “写端”阻塞

那么有缓冲通道即为一方可以写入很多数据,不用等对方的操作,而另外一方也可以直接拿出数据,不需要等对方写,但是注意一点:如果写入的一方把channel写满了,那么如果要继续写就要等对方取数据后才能继续写入,这也是一种阻塞,读出数据也是一样,如果里面没有数据则不能取,就要等对方写入

http://www.tj-hxxt.cn/news/79079.html

相关文章:

  • 工装公司是做什么的seo推广方案怎么做
  • 网站免费源码网页制作工具有哪些
  • 网站的相关搜索css代码怎么做在线网站排名工具
  • wordpress 4.9 下载辽源seo
  • 武汉市内做网站的公司一键优化清理手机
  • 公司网页注册六盘水seo
  • 美国cn2香港cn2seo学院
  • 在线做汉字头像的网站优化大师app
  • 电子商务在线网站建设网站营销软文
  • 一台电脑如何做网站内部搜索引擎优化
  • 曰本免费一级a做爰视频网站推广app软件
  • 上海沙龙网站建设google 网站推广
  • 网站程序 wap pc 同步群排名优化软件
  • 集合视频网站资源怎么做舆情网站入口
  • 网站建站平台 开源常用的关键词优化策略有哪些
  • 网站界面分析怎么去推广自己的店铺
  • 天津网站建设有哪些电商详情页模板免费下载
  • 软件代理网天津外贸seo推广
  • 怎么给网站做缓存seo优化易下拉霸屏
  • 成都网站制作哪家专业郑州网络推广代理
  • 改号宝网站搭建培训心得体会200字
  • 网站一定也做数据库吗哈尔滨怎样关键词优化
  • 做三角渐变用哪个网站国际站seo优化是什么意思
  • 免费弄空间的网站网站关键词排名外包
  • 家装o2o平台有哪些seog
  • ks2e做网站搜外网友情链接
  • 广州建设委员会官方网站灰色行业推广
  • 网站目录命名规则企业推广平台有哪些
  • 涿州做网站深圳seo优化公司排名
  • 个人怎么做网站推广网络营销核心要素