zoukankan      html  css  js  c++  java
  • golang 12. goroutine goexit

    goroutine.go

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    //子goroutine
    func newTask() {
    	i := 0
    	for {
    		i++
    		fmt.Printf("new Goroutine : i = %d
    ", i)
    		time.Sleep(1 * time.Second)
    	}
    }
    
    //主goroutine
    func main() {
    	//创建一个go程 去执行newTask() 流程
    	go newTask()
    
    	fmt.Println("main goroutine exit")
    
    
    	i := 0
    	for {
    		i++
    		fmt.Printf("main goroutine: i = %d
    ", i)
    		time.Sleep(1 * time.Second)
    	}
    
    }
    

    goexit.go

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    
    	
    		//用go创建承载一个形参为空,返回值为空的一个函数
    		go func() {
    			defer fmt.Println("A.defer")
    
    			func() {
    				defer fmt.Println("B.defer")
    				//退出当前goroutine
    				runtime.Goexit()
    				fmt.Println("B")
    			}()
    
    			fmt.Println("A")
    		}()
    
    	go func(a int, b int) bool {
    		fmt.Println("a = ", a, ", b = ", b)
    		return true
    	}(10, 20)
    
    	//死循环
    	for {
    		time.Sleep(1 * time.Second)
    	}
    
    }
    /*
    a =  10 , b =  20
    B.defer
    A.defer
    */
    
  • 相关阅读:
    荣岩岩作业10
    荣岩岩作业9
    荣岩岩作业8
    荣岩岩作业7
    荣岩岩作业6
    荣岩岩作业5
    荣岩岩作业4
    list<T>与datatable互相转换
    IE缓存机制
    html界面添加判断
  • 原文地址:https://www.cnblogs.com/dech/p/14941507.html
Copyright © 2011-2022 走看看