Go语言引入goroutine概念,使得在Go语言并发编程变得非常简单。
通过使用goroutine而不是裸用操作系统的并发机制,且应该使用消息传递来共享内存,而不是使用共享内存来进行通信,所以Go语言让并发编程变得更加的轻盈和安全。
goroutine本质是协程,比线程更加轻盈、更省资源。
下面是一个简单的例子演示goroutine和channel的使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main
import "fmt"
func sum(values []int, resultChan chan int){ sum := 0 for _, value := range values { sum += value } resultChan <- sum }
func main() { values := []int{1,2,3,4,5,6,7,8,9,10} resultChan := make(chan int, 2) go sum(values[:len(values)/2], resultChan) go sum(values[len(values)/2:], resultChan) sum1, sum2 := <- resultChan, <- resultChan
fmt.Println("Result:", sum1, sum2, sum1+sum2) }
|