28.笔记go语言——并发简单示例

本文通过示例介绍了Go语言的并发特性,包括goroutines的使用及channels进行通信的方式,并展示了如何利用这些特性实现并行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

28.笔记go语言——并发简单示例

并发示例

package main

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)

}

输出:

                                        I'mwaiting

                                        Coffeeis ready!

                                        Teeis ready!

 

Go语法特点

没有共享内存,更没有内存锁,并发靠语言自带的 goroutines

goroutines 之间的通信靠语⾔自带的 channels 来传递消息

总之,这⼀切都有利于简单地编写安全的并发程序。

 

并行计算

代码:

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)

                                        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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值