3D 視角看 Go 併發編程

主題:3D 視角看 Go 併發編程

Overview

  • 併發編程綜述
  • Goroutine
  • Channel & Select & waitGroup
  • 消息傳遞模式
  • 可視化工具 GoTrace

主講師:PP

前後在百度、第四範式、螞蟻金服工做,百度 Go Good Coder, 對分佈式計算、離線/實時大數據處理有豐富的實戰經驗。樂於分享本身的技術和學習心得。git

1、併發編程綜述

串行執行

3D 視角看 Go 併發編程

併發與並行

3D 視角看 Go 併發編程

多核時代的併發編程

3D 視角看 Go 併發編程

左圖:p1, p2, p3 這 3 個線程運行在單核上,分時複用 CPU,是併發執行。github

右圖:p1, p2, p3, p4 這 4 個線程運行在雙核 CPU 上, 每一個核上的線程是分時複用併發執行的, 而兩個 CPU 內核在同一時間內都有線程在執行,這就是並行執行。編程

2、Goroutine

Goroutine helloworld 3D 可視化(1)
3D 視角看 Go 併發編程微信

Goroutine helloworld 3D 可視化(2)
3D 視角看 Go 併發編程併發

3、Channel & Select & waitGroup

Channel

  • Channel 是 Goroutine 之間進行通訊/消息傳遞的一種方式, 能夠經過 <- 操做符向 Channel 裏發送和接受數據:
    3D 視角看 Go 併發編程分佈式

  • 併發模型: 消息傳遞 VS 共享內存

Channel 的 3D 可視化(1)ide

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 運行結束

4、消息傳遞模式

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

5、3D 可視化工具 GoTrace

https://github.com/divan/gotrace

分享時間:18年4月4日(週四)21:00——22:00

具體的參與方式:加小助手微信WeChat : 1251743084 備註「公開課」 進入直播分享羣

相關文章
相關標籤/搜索