並行是兩個任務同時進行,而併發呢,則是一會作一個任務一會又切換作另外一個任務。併發
臨界區用來表示一種公共資源或者說是共享數據,能夠被多個線程使用,可是每一次,只能有一個線程使用它,一旦臨界區資源被佔用,其餘線程要想使用這個資源,就必須等待。性能
好比一個線程佔用了臨界區資源,那麼其它全部須要這個資源的線程就必須在這個臨界區中進行等待,等待會致使線程掛起。這種狀況就是阻塞。非阻塞容許多個線程同時進入臨界區。阻塞的方式,通常性能不會太好。根據通常的統計,若是一個線程在操做系統層面被掛起,作了上下文切換了,一般狀況須要8W個時間週期來作這個事情。spa