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核数
  • 相关阅读:
    前端接收后端返回数据中【后端返回数据
    JavaSE 文件部分常用功能示例
    springboot controller路径名设置
    springboot 文档学习记录
    controller 方法路径、参数的使用
    Vue制作音乐播放器_基于网易云音乐的接口
    Java复习_枚举
    Java复习_static用例_单例模式_懒汉式
    c++和python中的sort
    通过portainer来管理容器和镜像
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14471222.html
Copyright © 2011-2022 走看看