如何保證線程安全

來源:趣味經驗館 2.42W

保證線程安全以是否需要同步手段分類,分為同步方案和無需同步方案。如下:

如何保證線程安全

1、互斥同步。

互斥同步是最常見的一種併發正確性保障手段。同步是指在多線程併發訪問共享數據時,保證共享數據在同一時刻只被一個線程使用(同一時刻,只有一個線程在操作共享數據)。而互斥是實現同步的一種手段,臨界區、互斥量和信號量都是主要的互斥實現方式。因此,在這4個字裏面,互斥是因,同步是果;互斥是方法,同步是目的。

2、非阻塞同步。

隨着硬件指令集的發展,出現了基於衝突檢測的樂觀併發策略,通俗地説,就是先進行操作,如果沒有其他線程爭用共享數據,那操作就成功了;如果共享數據有爭用,產生了衝突,那就再採用其他的補償措施。(最常見的補償錯誤就是不斷地重試,直到成功為止),這種樂觀的併發策略的許多實現都不需要把線程掛起,因此這種同步操作稱為非阻塞同步。

3、無需同步方案。

要保證線程安全,並不是一定就要進行同步,兩者沒有因果關係。同步只是保證共享數據爭用時的正確性的手段,如果一個方法本來就不涉及共享數據,那它自然就無需任何同步操作去保證正確性,因此會有一些代碼天生就是線程安全的。

熱門標籤