当前位置:网站首页>goroutine

goroutine

2022-04-23 19:21:00 Handsome that handsome

The original version :

func add(a int) int {
    
	// Assume that processing business logic requires 100ms
	time.Sleep(time.Millisecond * 100)
	return a
}
func main() {
    
	sum := 0
	start := time.Now().UnixNano() / 1e6
	for i := 0; i < 100; i++ {
    
		sum += add(i)
	}
	end := time.Now().UnixNano() / 1e6
	fmt.Printf(" Time consuming :%d\n", end-start)
	fmt.Println(sum)

}

result :

 Time consuming :11012
4950

Modified code

func add1(a int,allocatChan chan int)  {
    
	time.Sleep(time.Millisecond * 100)
	allocatChan<-a
}

func main() {
    
	var sum int = 0
	var allocatChan chan int = make(chan int,100)
	var flag int = 0
	start := time.Now().UnixNano() / 1e6
	for i := 0; i < 100; i++ {
    
		go add1(i,allocatChan)
	}
	for{
    
		if flag == 100{
    
			break
		}
		flag+=1
		a:=<-allocatChan
		sum+=a
	}
	end := time.Now().UnixNano() / 1e6
	fmt.Printf(" Time consuming :%d\n", end-start)
	fmt.Println(sum)
}

result :

 Time consuming :90
4950

版权声明
本文为[Handsome that handsome]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204210557451077.html