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核数
  • 相关阅读:
    FetchApi 和XHR的主要区别
    关于面试mysql优化的几点纪要
    Python学习第二天数组
    windows7__32位下安装python2.6.6
    一致性哈希算法运用到分布式
    2019年的前端面试总结
    ant design vue + ts 时遇到的坑之from 表单
    vue/cli3 + typescript 中watch prop component computed 的用法
    简易的数据追踪和并发
    基于角色的安全体系
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14471222.html
Copyright © 2011-2022 走看看