課程介紹
在一家國際投資銀行12樓的會議中,氣氛令人沮喪。 在關鍵的核心應用程式失敗並導致系統範圍內的中斷之後,公司的開發人員開會討論了最佳的解決方案。
“夥計們,我們這裡有一個嚴重的問題。我發現中斷是由我們的程式碼中的競爭狀況( race condition )引起的,是在前一段時間引入的,並在昨晚觸發。” 高階開發人員Mark Adams說。
房間變得安靜了。 在繁華的城市交通中,落地窗外的汽車緩慢而無聲地蠕動。 高階開發人員立即瞭解了情況的嚴重性,意識到他們現在將全天候工作以解決問題並整理資料儲存中的混亂情況。 經驗不足的開發人員瞭解競爭狀況很嚴重,但不知道到底是什麼原因導致的,因此請閉嘴。
最終,交付經理 Brian Holmes 打破了沉默,“該應用程式已經運行了幾個月,沒有任何問題,我們最近還沒有釋出任何程式碼,該軟體怎麼可能崩潰了?!”
每個人都搖搖頭,回到辦公桌前,把Brian獨自留在房間裡,感到困惑。 他拿出手機,搜尋“race condition”。
聽起來有點熟? 你有多少次聽到另一位開發人員在談論使用執行緒和並發(Concurrency)程式設計來解決特定問題,卻出於恐懼而置身於討論之外?
這是高階開發人員永遠不會分享的小祕密…多執行緒程式設計並不比普通程式設計難得多。 開發人員害怕併發程式設計,因為他們認為這是隻有經驗豐富的開發人員才能使用的高階主題。
這遠非真相。 我們的思想非常習慣於處理並發(Concurrency)。 實際上,我們在日常生活中做到這一點沒有任何問題,但是以某種方式我們很難將其轉換為程式碼。 造成這種情況的原因之一是,我們不熟悉可用於管理併發的概念和工具。 本課程旨在幫助你瞭解如何使用多執行緒工具和概念來管理並行程式設計。 它被設計為儘可能實用。 我們從有關並行性的一些理論開始,然後解釋作業系統如何處理多個行程( process )和執行緒。 稍後,我們將繼續透過使用多執行緒解決範例問題來解釋可用的多種工具。
在本課程中,我們將 Google 的 Go 程式語言及其 goroutines 結合使用,但是,此處學習的概念可以應用於大多數程式語言。
https://softnshare.com/multithreading-in-go-lang/
多執行緒 並行 在 軟體開發學習資訊分享 Facebook 的最讚貼文
--課程已於 2020 年 10 月更新--
本課程是關於多執行緒和併發程式設計的基礎知識和一些平行計算的概念。
在 21 世紀,隨著大數據( Big Data )和機器學習( Machine Learning )的出現,這個話題變得越來越流行。
課程將考慮執行緒( threads )、同步( synchronization )和鎖( locks )等底層概念。
接著將介紹並行程式庫( concurrent library ): 當然,在實現多執行緒應用程式時,可以使用內建的類別( classes )和介面( interfaces )。
然後將開發一些小程式作為多執行緒的展示案例 : 用餐-哲學家問題或圖書館內的學生模擬。 最後是關於平行計算和 MapReduce。
https://softnshare.com/multithreading-and-parallel-computing-in-java/
多執行緒 並行 在 軟體開發學習資訊分享 Facebook 的最佳解答
在 Google 的 Go Lang 中學習多執行緒、並行( Concurrent )和平行( Parallel )程式設計的實用和有趣的例子
https://softnshare.com/multithreading-in-go-lang/