您当前的位置: 首页 > 

衣舞晨风

暂无认证

  • 3浏览

    0关注

    1156博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

视频笔记:理解 channels - Kavya Joshi

衣舞晨风 发布时间:2018-01-18 20:27:40 ,浏览量:3

一、视频信息 1、视频观看地址

https://www.youtube.com/watch?v=KBZlN0izeiY

2、PPT下载地址

http://download.csdn.net/download/xunzaosiyecao/10212884

3、博文

https://about.sourcegraph.com/go/understanding-channels-kavya-joshi/

二、Go 的并发特性
  • goroutines: 独立执行每个任务,并可能并行执行
  • channels: 用于 goroutines 之间的通讯、同步
1、一个简单的事务处理的例子

对于下面这样的非并发的程序:

func main() {
  tasks := getTasks()
  // 处理每个任务
  for _, task := range tasks {
    process(task)
  }
}

将其转换为 Go 的并发模式很容易,使用典型的 Task Queue 的模式:

func main() {
  //  创建带缓冲的 channel
  ch := make(chan Task, 3)
  //  运行固定数量的 workers
  for i := 0; i < numWorkers; i++ {
    go worker(ch)
  }
  //  发送任务到 workers
  hellaTasks := getTasks()
  for _, task := range hellaTasks {
    ch             
关注
打赏
1647422595
查看更多评论
0.0766s