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

洛阳做网站的公司优化seo是什么意思

洛阳做网站的公司,优化seo是什么意思,收藏网站的链接怎么做的,临潼网站建设用channel控制goroutine的退出 本文简要介绍了,如何用channel控制goroutine的退出的基本方法 for-range主动停止goruitine package mainimport ("fmt""sync""time" )/* Go并发编程模型:主动停止goroutine 方法一&#…

用channel控制goroutine的退出

本文简要介绍了,如何用channel控制goroutine的退出的基本方法

for-range主动停止goruitine

package mainimport ("fmt""sync""time"
)/*
Go并发编程模型:主动停止goroutine
方法一:for-rang从channel上接收值,直到channel关闭
*/
var wg sync.WaitGroupfunc work(ch chan int) {defer wg.Done()// for range关键字,将其使用在channel上时,会自动等待channel的动作一直到channel被关闭close// 也就是clase(sh)后,for range就会退出for i := range ch {fmt.Println(i)}fmt.Println("work exit")
}func main() {wg.Add(1)var ch chan intch = make(chan int)go work(ch)for i := 0; i < 3; i++ {time.Sleep(1 * time.Second)ch <- i}time.Sleep(3 * time.Second)for i := 4; i < 7; i++ {time.Sleep(1 * time.Second)ch <- i}// close(sh)来控制"work"协程中的for range的完成close(ch)wg.Wait()
}

后台定时任务

	// 设定一个定时器,当定时器触发是就执行一次任务tricker := time.NewTicker(1 * time.Second)defer fmt.Println("tricker.Stop()")defer tricker.Stop()for {select {case <-stopCh:fmt.Println("do1 exit.")return//心跳,心跳一次就执行一次任务case <-tricker.C:time.Sleep(1 * time.Second)fmt.Println("do1 doing....")}}

使用stopCh控制goroutine退出

package mainimport ("fmt""sync""time"
)var wg sync.WaitGroupfunc do1(stopCh chan struct{}) {defer wg.Done()for {select {case <-stopCh:fmt.Println("go1 exit.")returndefault:time.Sleep(1 * time.Second)fmt.Println("go1 doing....")}}
}
func do2(stopCh chan struct{}) {defer wg.Done()for {select {case <-stopCh:fmt.Println("go2 exit.")returndefault:time.Sleep(1 * time.Second)fmt.Println("go2 doing....")}}
}func main() {wg.Add(2)stopCh := make(chan struct{})go do1(stopCh)go do2(stopCh)time.Sleep(5 * time.Second)// 让一个goroutine退出stopCh <- struct{}{}time.Sleep(5 * time.Second)// 让另一个goroutine退出stopCh <- struct{}{}wg.Wait()}

关闭channel来控制goroutine退出

package mainimport ("fmt""sync""time"
)/*
多个通道都关闭才退出
利用select的一个特性,select不会在nil的通道上进行等待
*/
var wg sync.WaitGroupfunc work(in, exit1, exit2 chan bool) {defer wg.Done()for {select {// 当exit管道收到信号后退出goroutinecase v := <-exit1:fmt.Println("exit1 收到退出信号")fmt.Println("v=", v)exit1 = nilcase <-exit2:fmt.Println("exit2 收到退出信号")exit2 = nilcase value := <-in:fmt.Println(value)}fmt.Println(time.Now())fmt.Println("遍历了一次")// 当2个退出通道都收到信号时,就退出for循环if exit1 == nil && exit2 == nil {return}}}func main() {in := make(chan bool)exit1 := make(chan bool)exit2 := make(chan bool)wg.Add(1)go work(in, exit1, exit2)for i := 0; i < 6; i++ {time.Sleep(5 * time.Millisecond)in <- true}// 主动停止goroutine方法一//exit1 <- 1//exit2 <- 1// 主动停止goroutine方法二close(exit1)close(exit2)wg.Wait()}
http://www.mnyf.cn/news/44527.html

相关文章:

  • 成都疫情最新数据消息深圳优化排名公司
  • 网站劫持必须做系统嘛北京网站优化体验
  • 企业内部网站设计天猫关键词排名怎么控制
  • 云伙伴小程序开发公司快速刷排名seo软件
  • 分析网络营销方式排名优化软件点击
  • 自助建站模板下载seo公司是什么意思
  • 建网站要使用哪些软件营销型网站定制
  • 网站demo要几个人做手机端关键词排名优化
  • 杭州做网站的公司济南网站建设公司
  • 新开神途手游发布网站cpu优化软件
  • dw对网站建设有哪些作用百度关键词搜索指数
  • 专业的佛山网站建设重庆百度地图
  • 银川网站建设有哪些进一步优化落实
  • 那些网站专门做棋牌推广的免费刷推广链接的软件
  • 加强公司内部网站建设百度推广助手官方下载
  • 茂县建设局网站网站开发报价方案
  • 移动端高端网站网站seo标题是什么意思
  • 查询网站收录情况的方法seo专员工作容易学吗
  • 做刷票的网站网站推广怎么写
  • 网页源代码视频下载链接seo云优化软件
  • 深圳 福田网站建设宣传产品的方式
  • 品牌网站建设坚持大蝌蚪新闻式软文
  • 做犯法任务的网站优化营商环境心得体会
  • 做交友网站多少钱国内新闻最新消息
  • 网站建设与维护要用到代码吗樱桃磁力bt天堂
  • 如何查询一个网站所属的主机十大网站管理系统
  • wordpress 询价记录深圳短视频seo教程
  • 美食网站怎么做关键词排名优化顾问
  • 下载搭建网站软件seo哪家强
  • 在招聘网站做销售怎么样网站性能优化