0%

Go并发编程

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 // 将计算结果发送到channel中
}

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)
}
小主,路过打个赏再走呗~