併發編程實戰學習筆記(一)——線程安全性問題的本質以及理論概述

線程帶來的風險,也是併發編程複雜性的原因

安全性問題
如共享變量寫入的覆蓋問題等;

活躍性問題
如死鎖、活鎖、飢餓等問題

性能問題
線程的使用,會帶來線程上下文切換的代價、系統資源使用率過高等問題,處理得不夠好,也可能達不到我們希望併發模型給我們帶來的性能上的上升。

線程安全問題的簡述概念

要編寫線程安全的代碼,其核心在於要對狀態訪問操作進行管理,特別是對共享的和可變的狀態進行訪問。

線程安全問題的解決

如果當多個線程訪問同一個可變的狀態變量時沒有使用合適的同步,那麼程序就會出現錯誤。有三種方式可以修復這個問題:
  • 不在線程之間共享該狀態變量;
  • 將狀態變量修改爲不可變的變量;
  • 在訪問狀態變量時使用同步;

正確編寫併發程序的思路

首先使代碼能夠正確運行,然後再提高代碼的速度。即使如此,最好也只是當性能測試結果和應用需求告訴你必須提高性能,以及測量結果表明這種優化在實際環境中確實能帶來性能提升時,才進行優化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章