fbpx

使用 Go (Golang)掌握多執行緒程式設計

在 Google 的 Go Lang 中學習多執行緒、並行( Concurrent )和平行( Parallel )程式設計的實用和有趣的例子

報名參加課程

已經上過這門課程?

🔥歡迎來參加這個活動 – 上課心得分享與獎勵說明 :分享就贈送一門線上課程

從這 4 小時的課程,你會學到

  • 發現如何建立響應性和高效能的軟體
  • 瞭解如何使用多執行緒為特定類型的問題建模和模擬
  • 開發具有高並行性( Concurrent )和高平行性( Parallel )的程式
  • 瞭解平行計算( Parallel computing )的優點、侷限性和特性
  • 用 Go 提高你的程式設計技巧,選擇更高階、多執行緒的主題
  • 瞭解 goroutines (一系列的執行緒操作)、mutexes( 互斥鎖,Mutual exclusion,防止兩條執行緒同時對同一公共資源,比如全域變數,進行讀寫的機制)、讀寫機鎖、waitgroups( 一群 goroutines 中正等待別的 goroutines 完成的那些 goroutines )、channels( gorotuine 的溝通通道,或做緩衝佇列)、條件變數等

要求

  • 一些 在 Go 的程式設計的經驗(如果你知道如何使用函數、迴圈、陣列和一些指標就足夠了)
  • 安裝了最新版本的 Go
  • 能夠做 50 個俯臥撐,每下同時喊一個獨特的質數(只是開玩笑)

課程說明

在一家國際投資銀行 12 樓舉行的會議氣氛十分悲觀。在一個關鍵的核心應用程式失敗並導致系統全面癱瘓後,公司的開發人員開會討論最佳的前進方式。

“夥計們,我們遇到了嚴重的問題。我發現這次宕機是由我們程式碼中的一個競態條件( race condition )引起的,這個條件是前一段時間引入、昨晚觸發的。”高階開發人員 Mark Adams 說。

房間裡一片寂靜。從地板到天花板的車窗外面,車輛在繁忙的城市交通中緩慢而安靜地行駛著。高階開發人員立即明白了情況的嚴重性,並意識到他們現在將晝夜不停地工作以修復問題,並整理資料儲存中的混亂。缺乏經驗的開發人員明白競態條件( race condition )是嚴重的,但不知道確切的原因,因此他們保持沉默。

最終,交付經理 Brian Holmes 打破了沉默,“應用程式已經運行了幾個月,沒有任何問題,我們最近沒有發佈任何程式碼,這個軟體怎麼可能就這麼壞了? ”

每個人都搖搖頭,回到自己的辦公桌前,留下 Brian 一個人在房間裡,迷惑不解。他拿出手機,在谷歌上搜索 “race condition”。

聽起來是不是很熟悉?有多少次你聽到其他開發人員談論使用執行緒和並行程式設計來解決一個特定的問題,但是由於害怕你置身於討論之外?

這裡有一個高階開發人員永遠不會分享的小祕密… 多執行緒程式設計( Multithreading programming )並不比普通程式設計難多少。開發人員害怕並行程式設計,因為他們認為這是一個只有經驗豐富的開發人員才能涉及的高階主題。

這遠非事實。我們的大腦非常習慣於處理並行。事實上,我們在日常生活中這樣做沒有任何問題,但不知怎麼的,要將其轉化為我們的程式碼竟那麼地掙扎。其中一個原因是,我們不熟悉可用於管理這種並行性的概念和工具。本課程將幫助你瞭解如何使用多執行緒工具和概念來管理平行程式設計( parallel programming )。它被設計成儘可能的實用。我們從平行理論( parallelism )開始,然後解釋作業系統如何處理多個程序和執行緒。稍後,我們將通過使用多執行緒解決示例問題來解釋可用的多種工具。

在本課程中,我們將使用 Google 的 Go 程式語言,用其 goroutines 特性,但是這裡學到的概念可以應用於大多數程式語言。

本課程的所有程式碼都可以在 github 上找到,使用者名稱/專案 : cutajarj/multithreadingingo

目標受眾

  • 開發人員 – 希望藉由提高自己的技能和學習並行多執行緒程式設計,將自己的職業生涯更上一層樓的
  • 大學生 – 目前正在學習平行計算,想看看在課堂上學到的概念是如何與實踐連起來
  • 有經驗的開發人員 – 最近開始使用 Go ,希望發現可用的多執行緒工具
  • 交付經理 Brian Holmes

講師簡介

James Cutajar 軟體開發人員,作者,教師  ( 更多講師主講課程介紹 )

James Cutajar 是一位軟體開發人員,對可擴展高效能運算和分散式演算法感興趣。他在技術領域的各個行業工作了 15 年以上。他還是 Scala 各種影片課程以及有關資料結構和演算法的書的作者。在他的職業生涯中,他一直是講師、開源撰稿人、部落格作者和技術傳播者。

當他不寫軟體時,他正在騎摩托車、衝浪、潛水或駕駛輕型飛機。他出生於馬耳他,在倫敦居住了將近十年,現在在葡萄牙工作。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

報名參加課程 Get Good Deals

Sponsored by Udemy

也許你會有興趣

 歡迎使用 App / Email | Telegram 訂閱 網站更新

Spread the love

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: