首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >3D 视角看 Go 并发编程

3D 视角看 Go 并发编程

作者头像
py3study
发布2020-01-07 11:16:34
发布2020-01-07 11:16:34
4050
举报
文章被收录于专栏:python3python3

主题:3D 视角看 Go 并发编程

Overview

  • 并发编程综述
  • Goroutine
  • Channel & Select & waitGroup
  • 消息传递模式
  • 可视化工具 GoTrace

主讲师:PP

先后在百度、第四范式、蚂蚁金服工作,百度 Go Good Coder, 对分布式计算、离线/实时大数据处理有丰富的实战经验。乐于分享自己的技术和学习心得。

一、并发编程综述

串行执行

并发与并行

多核时代的并发编程

左图:p1, p2, p3 这 3 个线程运行在单核上,分时复用 CPU,是并发执行。

右图:p1, p2, p3, p4 这 4 个线程运行在双核 CPU 上, 每个核上的线程是分时复用并发执行的, 而两个 CPU 内核在同一时间内都有线程在执行,这就是并行执行。

二、Goroutine

Goroutine helloworld 3D 可视化(1)

Goroutine helloworld 3D 可视化(2)

三、Channel & Select & waitGroup

Channel

  • Channel 是 Goroutine 之间进行通信/消息传递的一种方式, 可以通过 <- 操作符向 Channel 里发送和接受数据:
  • 并发模型: 消息传递 VS 共享内存

Channel 的 3D 可视化(1)

Channel 的 3D 可视化(2) – Timer

Channel 的 3D 可视化 (3) – 乒乓球程序

Select

  • select 语句让 goroutine 等待多个通信操作
  • select 会等待 case 中有能够执行的 case 时去执行
  • 如果多个 case 同时就绪时,select 会随机地选择一个执行

Select 的 3D 可视化

waitGroup

类似 Java 的 countDownLatch, 计数等待一组 goroutine 运行结束

四、消息传递模式

  • Fade In
  • Fade Out(workers)
  • Servers
  • Server + Worker

五、3D 可视化工具 GoTrace

https://github.com/divan/gotrace

分享时间:18年4月4日(周四)21:00——22:00

具体的参与方式:加小助手微信WeChat : 1251743084 备注“公开课” 进入直播分享群

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主题:3D 视角看 Go 并发编程
    • Overview
  • 主讲师:PP
  • 一、并发编程综述
    • 串行执行
    • 并发与并行
    • 多核时代的并发编程
  • 二、Goroutine
  • 三、Channel & Select & waitGroup
    • Channel
    • Select
    • waitGroup
  • 四、消息传递模式
  • 五、3D 可视化工具 GoTrace
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档