zoukankan      html  css  js  c++  java
  • golang学习笔记——协程

    当主协程退出后子协程也会退出
    package main
     
    import (
    "fmt"
    "time"
    )
     
    func main() {
    go func() {
         i := 0
         for {
              i++
              fmt.Println("son i = ", i)
              time.Sleep(time.Second)
          }
    }()
     
    for i := 0; i < 3; i++ {
         fmt.Println("main i = ", i)
         time.Sleep(time.Second)
         if i == 2 {
              break
         }
    }
     
    }
     
    runtime包
    • runtime.Gosched() 让出当前执行权限
    package main
     
    import (
        "fmt"
        "runtime"
    )
     
    func main() {
        //设置为单核运行
        runtime.GOMAXPROCS(1)
        go func() {
             for i := 0; i < 5; i++ {
                     fmt.Println("task i = ", i)
             }
        }()
     
        for i := 0; i < 2; i++ {
             runtime.Gosched()
             fmt.Println("main i = ", i)
        }
     
    }
    • runtime.Goexit() 终止当前协程
    package main
     
    import (
        "fmt"
        "runtime"
    )
     
    func test() {
        defer func() {
             fmt.Println("dddddddddddddddd")
        }()
     
     
        // return //终止函数
        runtime.Goexit() //终止当前协程
     
        fmt.Println("ccccccccccccccccccc")
    }
     
    func main() {
        go func() {
             fmt.Println("aaaaaaaaaaaaaaaa")
     
             test()
     
             fmt.Println("bbbbbbbbbbbbbbb")
        }()
     
        for {
     
        }
    }
     
    //********输出***********
    aaaaaaaaaaaaaaaa
    dddddddddddddddd
    • runtime.GOMAXPROCS() 设置执行指令的cpu核数,返回上一次执行设置的cpu核数
  • 相关阅读:
    centos 7下安装mysql 5.7.21
    以多主模式优雅进行MGR复制搭建
    JMeter测试工具
    keepalived故障切换邮件通知
    vim常用快捷键
    mysql高可用之MHA--邮件报警
    Shell脚本实现批量下载资源并保留原始路径
    面试常考题 max pool实现
    Cpp 书籍推荐
    面试常考题 浅谈 赛马问题
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14471222.html
Copyright © 2011-2022 走看看