3D 视角看 Go 并发编程

发布时间:2019-09-13 09:30:07编辑:auto阅读(1341)

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

    Overview

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

    主讲师:PP

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

    一、并发编程综述

    串行执行

    3D 视角看 Go 并发编程

    并发与并行

    3D 视角看 Go 并发编程

    多核时代的并发编程

    3D 视角看 Go 并发编程

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

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

    二、Goroutine

    Goroutine helloworld 3D 可视化(1)
    3D 视角看 Go 并发编程

    Goroutine helloworld 3D 可视化(2)
    3D 视角看 Go 并发编程

    三、Channel & Select & waitGroup

    Channel

    • Channel 是 Goroutine 之间进行通信/消息传递的一种方式, 可以通过 <- 操作符向 Channel 里发送和接受数据:
      3D 视角看 Go 并发编程

    • 并发模型: 消息传递 VS 共享内存

    Channel 的 3D 可视化(1)

    3D 视角看 Go 并发编程
    3D 视角看 Go 并发编程

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

    3D 视角看 Go 并发编程
    3D 视角看 Go 并发编程

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

    3D 视角看 Go 并发编程
    3D 视角看 Go 并发编程

    Select

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

    Select 的 3D 可视化
    3D 视角看 Go 并发编程
    3D 视角看 Go 并发编程

    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 备注“公开课” 进入直播分享群

关键字