• 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核数
  • 相关阅读:
    算法训练(大富翁)
    算法训练题(奖励最小)
    算法训练题
    乔布斯
    算法题(符合题意的6位数)
    算法题(八皇后)
    算法题(分小组)
    汉诺塔
    递归算法题(兔子)
    字符串-mask-每个元音包含偶数次的最长子字符串
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14471222.html
Copyright © 2020-2023  润新知