在計算機領域,同步就是指一個進程在執行某個請求的時候,若該請求須要一段時間才能返回信息,那麼這個進程將會一直等待下去,直到收到返回信息才繼續執行下去;異步是指進程不須要一直等下去,而是繼續執行下面的操做,無論其餘進程的狀態。當有消息返回時系統會通知進程進行處理,這樣能夠提升執行的效率。安全
而咱們平時常常討論的同步問題多發生在多線程環境中的數據共享問題。即當多個線程須要訪問同一個資源時,它們須要以某種順序來確保該資源在某一特定時刻只能被一個線程所訪問,若是使用異步,程序的運行結果將不可預料。所以,在這種狀況下,就必須對數據進行同步,即限制只能有一個進程訪問資源,其餘線程必須等待。多線程
實現同步的機制主要有臨界區、互斥、信號量和事件dom
臨界區:經過對多線程的串行化來訪問公共資源或一段代碼,速度快,適合控制數據訪問。在任意時刻只容許一個線程對共享資源進行訪問,若是有多個線程試圖訪問公共資 源,那麼在有一個線程進入後,其餘試圖訪問公共資源的線程將被掛起,並一直等到進入臨界區的線程離開,臨界區在被釋放後,其餘線程才能夠搶佔。異步
互斥量:採用互斥對象機制。 只有擁有互斥對象的線程纔有訪問公共資源的權限,由於互斥對象只有一個,因此能保證公共資源不會同時被多個線程訪問。互斥不只能實現同一應用程序的公共資源安全共享,還能實現不一樣應用程序的公共資源安全共享 .互斥量比臨界區複雜。由於使用互斥不單單可以在同一應用程序不一樣線程中實現資源的安全共享,並且能夠在不一樣應用程序的線程之間實現對資源的安全共享。async
信號量:它容許多個線程在同一時刻訪問同一資源,可是須要限制在同一時刻訪問此資源的最大線程數目 。信號量對象對線程的同步方式與前面幾種方法不一樣,信號容許多個線程同時使用共享資源,這與操做系統中的PV操做相同。它指出了同時訪問共享資源的線程最大數目。它容許多個線程在同一時刻訪問同一資源,可是須要限制在同一時刻訪問此資源的最大線程數目。操作系統
事件:經過通知操做的方式來保持線程的同步,還能夠方便實現對多個線程的優先級比較的操做 。線程
serial 連續的 串行隊列對象
concurrent 同時發生的 並行隊列隊列
asynchronous|eɪˈsɪŋkrənəs| 異步的 異步執行(不需等待,各執行各的)進程
synchronization|ˌsɪŋkrənaɪˈzeɪʃn, American -nɪˈz-| 同時發生的 同步執行 須要等待的
variable|ˈveərɪəbl| 變量
a dependent/free/random variable因變量/自變量/隨機變數
constant 常量,恆數 持續的,反覆的,不斷的,不變的