2013-02-19 118 views
1

嚴格定義的線程同步或序列化是特定機制的應用,以確保兩個併發執行的線程或進程不會同時執行程序的特定部分。 (來自維基百科)。線程同步是否意味着線程安全?

因此,如果一個對象實現線程同步,是否意味着它是線程安全的?

回答

2

線程同步是一種實現線程安全的方法。線程安全意味着程序可以同時運行多個線程,而不會有線程破壞對方的狀態。

儘管在某些情況下可以保持線程安全而無需線程同步 - 例如,如果兩個線程都從相同的數據結構中讀取但沒有線程修改數據結構,那麼該程序可以是線程安全的需要線程同步。還有一些無鎖的數據結構被設計爲可供多線程使用而無需同步。

因此,如果一個對象實現線程同步,是否意味着 [它]具有線程安全性?

如果同步是正確完成的,是的。如果你不小心做到不正確(或不完整)很容易,在這種情況下,即使是同步程序可能偶爾會因爲缺乏線程安全性而崩潰或輸出錯誤。