28.笔记go语言——并发简单示例
2017-10-02 12:18
555 查看
28.笔记go语言——并发简单示例
import (
"fmt"
"time"
)
func ready(w string, sec int64) {
secs:= time.Duration(sec) * time.Second
time.Sleep(secs)
fmt.Println(w,"is ready!")
}
func main() {
goready("Tee", 2)
goready("Coffee", 1)
fmt.Println("I'mwaiting")
secs:= time.Duration(2) * time.Second
time.Sleep(5* secs)
}
Coffeeis ready!
Teeis ready!
goroutines 之间的通信靠语⾔自带的 channels 来传递消息
总之,这⼀切都有利于简单地编写安全的并发程序。
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)
gosum(values[:len(values)/2], resultChan)
gosum(values[len(values)/2:], resultChan)
sum1,sum2 := <-resultChan, <-resultChan //
接收结果
fmt.Println("Result:",sum1, sum2, sum1+sum2)
}
并发示例
package mainimport (
"fmt"
"time"
)
func ready(w string, sec int64) {
secs:= time.Duration(sec) * time.Second
time.Sleep(secs)
fmt.Println(w,"is ready!")
}
func main() {
goready("Tee", 2)
goready("Coffee", 1)
fmt.Println("I'mwaiting")
secs:= time.Duration(2) * time.Second
time.Sleep(5* secs)
}
输出:
I'mwaitingCoffeeis ready!
Teeis ready!
Go语法特点
没有共享内存,更没有内存锁,并发靠语言自带的 goroutinesgoroutines 之间的通信靠语⾔自带的 channels 来传递消息
总之,这⼀切都有利于简单地编写安全的并发程序。
并行计算
代码:
package mainimport "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)
gosum(values[:len(values)/2], resultChan)
gosum(values[len(values)/2:], resultChan)
sum1,sum2 := <-resultChan, <-resultChan //
接收结果
fmt.Println("Result:",sum1, sum2, sum1+sum2)
}
执行结果
Result: 40 15 55相关文章推荐
- GO语言学习笔记3(函数接口并发)
- Go语言学习笔记-并发
- Go语言并发与并行学习笔记(三)
- Go语言并发与并行学习笔记(三)
- Go语言并发与并行学习笔记(一)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(一)
- Go语言实战-- 并发示例-Runner
- Go语言 Go操作mysql简单示例
- Go语言 简单的爬虫示例(2)——编码转换
- Go语言之并发示例(Runner)
- Go 语言并发笔记
- Go语言并发与并行学习笔记(二)
- Go语言实战--并发示例-Pool
- Go语言基础学习三-简单的代码分析(并发)
- 简单看懂GO语言并发
- Go语言并发与并行学习笔记(三)
- GO: 语言并发与学习笔记
- Go语言并发编程简单入门