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

网站里的图片切换怎么做百度关键词优化推广

网站里的图片切换怎么做,百度关键词优化推广,橙子建站是监控手机,18款黄金软件引言 在Golang中,因为协程执行的顺序是不固定的,如果不在代码里进行控制,可能就会导致预期外的输出。 本文通过分析一段代码的执行来介绍这种情况,以及可行的控制协程执行顺序的方法: sleep()waitGroup 实例分析 代…

引言

在Golang中,因为协程执行的顺序是不固定的,如果不在代码里进行控制,可能就会导致预期外的输出。
本文通过分析一段代码的执行来介绍这种情况,以及可行的控制协程执行顺序的方法:

  1. sleep()
  2. waitGroup

实例分析

代码

func NewRingBuffer(inCh, outCh chan int) *ringBuffer {return &ringBuffer{inCh:  inCh,outCh: outCh,}
}type ringBuffer struct {inCh  chan intoutCh chan int
}func (r *ringBuffer) Run() {for v := range r.inCh {select {case r.outCh <- v:default:<-r.outCh // pop one item from outchanr.outCh <- v}}close(r.outCh)
}func main() {inCh := make(chan int)outCh := make(chan int, 4)rb := pkg.NewRingBuffer(inCh, outCh)go rb.Run()for i := 0; i < 10; i++ {inCh <- i}close(inCh)//time.Sleep(time.Millisecond * 50)for res := range outCh {fmt.Println(res)}
}

上面代码的作用是,声明ringBuffer环状缓冲区;主协程往inCh写10个数的同时,有一个协程异步的读取数据,并写到outCh中;
outCh是一个4缓冲区大小的channel,如果outCh没满就直接写入,否则把outCh的首部元素移除再添加;
因此,预期输出应该是:6、7、8、9。
但实际的输出是:5、6、7、8、9。

分析

多出来的“5”,是因为协程的执行顺序不可控,当主协程执行到

for i := 0; i < 10; i++ {inCh <- i
}close(inCh)

时,此时outCh中是5、6、7、8;run协程还没有继续执行,就开始遍历outCh:

for res := range outCh {fmt.Println(res)
}

然后输出阻塞后,run协程才继续执行,把9写到outCh中,因此最后的输出结果是5、6、7、8、9.

解决办法

sleep()

使用sleep()函数,能让当前协程让出CPU,暂停执行一段时间。
对于这种方法,可以对上面函数进行如下改造:

close(inCh)
time.Sleep(time.Millisecond * 50)
// 新增
for res := range outCh {fmt.Println(res)
}

WaitGroup

使用waitGroup可以实现协程间通信,对于这段例子,通过wg保证run()函数执行完后,在对outCh进行输出。
改造方法如下:

func (r *ringBuffer) RunWithWg(wg *sync.WaitGroup) {defer wg.Done()for v := range r.inCh {select {case r.outCh <- v:default:<-r.outCh // pop one item from outchanr.outCh <- v}}close(r.outCh)
}func TestRaceWithWg(t *testing.T) {inCh := make(chan int)outCh := make(chan int, 4)rb := pkg.NewRingBuffer(inCh, outCh)var wg sync.WaitGroupwg.Add(1)go rb.RunWithWg(&wg)go func() {for i := 0; i < 10; i++ {inCh <- i}close(inCh)}()wg.Wait()for res := range outCh {fmt.Println(res)}
}
http://www.shuangfujiaoyu.com/news/9202.html

相关文章:

  • 朔州推广型网站建设百度广告联系方式
  • 网站栏目页关键词如何做给公司建网站需要多少钱
  • 做签名照的网站百度销售系统登录
  • srm供应商管理系统官网广州网站营销优化qq
  • 怎么开个人网站电商中seo是什么意思
  • 网站建设要多久的云搜索网页版入口
  • 南宁网站开发建设外贸网络营销
  • 国外做游戏的视频网站有哪些引擎网站推广法
  • 有域名之后怎样进行网站建设免费网站大全下载
  • 商务型网站有哪些网站定制设计
  • 广州顺德网站设计网络营销的应用
  • 币客bkex是一群外行人做的网站必应搜索引擎入口
  • 政府网站后缀的域名朋友圈推广一天30元
  • 最近新闻头条最新消息seo标题优化分析范文
  • 网站开发宣传图片ciliba磁力搜索引擎
  • 企业微信网站开发文档站长工具查询网
  • 福州高端品牌网站建设模板免费网站建设
  • 网站seo优化实例seo推广软件代理
  • android网站开发教程怎样在百度上发布作品
  • 河北省城乡建设培训网官方网站百度一下电脑版
  • 在农村做相亲网站怎么样新手怎么做网络销售
  • 百度搜索链接seo技术教程
  • 上海网站优化排名宣传推广网络推广
  • 旅游去过的地方可做标识网站二十条优化措施原文
  • flash网站设计实例世界杯排名
  • 原平的旅游网站怎么做的广告文案经典范例200字
  • 服装行业网站建设及推广路由优化大师官网
  • 网站流量多少排名优化工具下载
  • 网站策划制作公司百度sem是什么
  • 潍坊高端网站建设公司网站推广哪个好