1. 程式人生 > >3D 視角看 Go 並發編程

3D 視角看 Go 並發編程

Go 並發 運維 運維開發

主題: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 備註“公開課” 進入直播分享群

3D 視角看 Go 並發編程