Go学习笔记六(并发编程)

认识goroutine

//goroutine 是一个普通的函数,只是需要使用关键字 go 作为开头。
ready("Tea", 2) ///← 普通函数调用
go ready("Tea", 2) //← ready() 作为 goroutine 运行
package main
import (
    "fmt"
    "time"
)
func ready(w string , sec int ) {
     time.Sleep(time.Duration(sec) * time.Second)
     fmt.Println(w, "is ready ! ")
 }
func main() {
     go ready("Tea", 2) //启动了 goroutine
     go ready("Coffee", 1) //启动了 goroutine
     fmt.Println("I'm waiting")
     //如果不等待 goroutine 的执行,程序立刻终止,而任何正在执行
     // 的 goroutine 都 会停止
     time.Sleep(5 * time.Second) //等待5秒,等待goroutine退出
 }
//  I'm waiting   //← 立刻
// Coffee is ready ! ///← 1 秒后
// Tea is ready ! //← 2 秒后

为了解决上述问题,需要一些能够同 goroutine 通讯的机制。这一机制通过 channels 的形式使用

//必须使用 make 创建 channel
ci := make ( chan int ) //创建 channel ci 用于发送和接收整数
cs := make ( chan string )//创建 channel cs 用于字符串
cf := make ( chan interface {} )//channel cf使用了空接口来满足各种类型

//向 channel 发送或接收数据

ci <− 1 //← 发送 整数 1 到 channel ci
<− ci //← 从 channel ci 接收 整数
i := <− //ci ← 从 channel ci 接收 整数,并保存到 i 中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值