所謂同步,即同時起步,協調一致。不同的對象,對“同步”的理解方式略有不同。如,設備同步,是指在兩個設備之間規定一個共同的時間參考;數據庫同步,是指讓兩個或多個數據庫內容保持一致,或者按需要部分保持一致;文件同步,是指讓兩個或多個文件夾里的文件保持一致。而編程中、通信中所說的同步主旨在協同步調,按預定的先后次序運行。
線程同步,指一個線程發出某一功能調用時,在沒有得到結果之前,該調用不返回。同時其它線程為保證數據一致性,不能調用該功能。 “同步”的目的,是為了避免數據混亂,解決與時間有關的錯誤。實際上,不僅線程間需要同步,進程間、信號間等等都需要同步機制。因此,所有“多個控制流,共同操作一個共享資源”的情況,都需要同步。
數據混亂原因:1. 資源共享(獨享資源則不會);????? 2. 調度隨機(意味著數據訪問會出現競爭);3. 線程間缺乏必要的同步機制。以上3點中,前兩點不能改變,欲提高效率,傳遞數據,資源必須共享。只要共享資源,就一定會出現競爭。只要存在競爭關系,數據就很容易出現混亂。所以只能從第三點著手解決。使多個線程在訪問共享資源的時候,出現互斥。