zoukankan      html  css  js  c++  java
  • GO 中 runtime.goexit() 和 os.exit() 的区别

    runtime.goexit() 只是退出当前的goroutinue  os.exit()会退出主进程

    package main
    
    import (
        "fmt"
        "os"
        "runtime"
        "sync"
        "time"
    )
    
    var wg sync.WaitGroup
    
    func testFunc1(wg *sync.WaitGroup) {
        defer wg.Done()
        for i := 0; i < 10; i++ {
            fmt.Println("testFunc1")
            time.Sleep(1*1000000000)
        }
        runtime.Goexit()
    }
    
    func testFunc2(wg *sync.WaitGroup){
        defer wg.Done()
        for{
            fmt.Println("testFunc2")
            time.Sleep(1*1000000000)
        }
    }
    
    func testFunc3(wg *sync.WaitGroup){
        defer wg.Done()
        for i:=0; i<1000000000000;i++{
            continue
        }
        os.Exit(0)
    }
    func testFun4()  {
        os.Exit(12)
    }
    
    func main()  {
        wg.Add(1)
        //go testFunc1(&wg)
        go testFunc2(&wg)
        //go testFunc3(&wg)
        go testFun4()
        wg.Wait()
    }
    邮箱: 1090055252@qq.com
  • 相关阅读:
    线程池进程池
    设计原则与设计模式
    腾讯阿里第三方接入
    计划任务
    系统服务
    Python Faker模块
    Python openpyxl模块
    Python-docx模块
    进程管理
    磁盘管理
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14270743.html
Copyright © 2011-2022 走看看