安全性、活躍性已經性能問題

安全性

併發編程是一個複雜的技術領域,微觀上涉及到原子性問題、可見性問題和有序性問題,宏觀則表現爲安全性、活躍性以及性能問題。算法

線程安全: 程序按照咱們指望的執行編程

如何才能寫出線程安全的程序:安全

避免出現原子性問題,可見性問題和有序性問題數據結構

數據競爭: 當多個線程同時訪問同一數據,而且至少有一個線程會寫這個數據的時候,多線程

競態條件:程序的執行結果依賴程序執行的順序併發

活躍性

活鎖: 線程之間相互謙讓性能

飢餓:

線程因沒法訪問所需資源而沒法執行下去的狀況線程

線程優先級「不均」,在CPU繁忙的狀況下,優先級低的線程獲得執行的機會很小, 就可能發生線程「飢餓」;持有鎖的線程,若是執行的時間過長,也可能致使「飢餓」問題。設計

解決方案:資源

  1. 保證資源充足
  2. 公平地分配資源
  3. 避免持有鎖的線程長時間執行。

性能爲題

鎖的過分使用可能致使串行的範圍過大,這樣就不能發揮多線程的優點了,而咱們之因此使用多線程搞併發程序就是爲了提高性能,咱們設計程序是要關注它的宏觀性

解決:

  1. 使用無鎖的算法和數據結構
  2. 減小鎖持有的時間

性能指標:

  1. 吞吐量: 指的是單位時間內能處理的請求數量。吞吐量越高,說明性能越好
  2. 延遲:指的是從發出請求到收到響應的時間。延遲越小,說明性能越好。
  3. 併發量:指的是能同時處理的請求數量,通常來講隨着併發量的增長、延遲也會增長。因此延遲這個指標,通常都會是基於併發量來講的。例如併發量是1000的時候,延遲是50毫秒。

**** 碼字不易若是對你有幫助請給個關注****

**** 愛技術愛生活 QQ羣: 894109590****

相關文章
相關標籤/搜索