併發、並行、同步、異步、阻塞、非阻塞相關概念

併發

  在一個時間段內,有幾個程序在同一個cpu上面運行,可是任意時刻只有一個程序在cup上運行。(一個cpu在一個時間點上只能運行一個程序,由於cpu的運算速度很是快,可達上億次每秒,如在一秒內能夠切換100個進程時,可是由於咱們感受不出cpu的切換,因此錯覺是幾個程序在同時運行的)併發

並行

  指的是在任意時刻上,有多個程序運行在不一樣的cpu上。(如8個cpu的計算機,每一個cpu上同一個時刻,有一個程序運行的時候,那麼能夠成並行數量爲8)異步

 

注意:同步和異步的說法是相對於IO操做來講的。函數

同步

  在代碼執行IO操做的時候,必須等待IO操做完成以後,才返回的調用方式。spa

如:線程的同步(即當有一個線程在對內存進行操做時,其餘線程都不能夠對這個內存地址進行操做,直到該線程完成操做, 其餘線程才能對該內存地址進行操做,而其餘線程又處於等待狀態)線程

異步

  代碼在執行IO操做的時候,沒必要等到IO操做完成就返回的調用方式協程

 

阻塞

  在函數調用的時候,當前線程被掛起來。進程

非阻塞

  調用函數的時候,當前的線程不會被掛起,而是當即返回。內存

 

注意:同步和異步其實是消息通訊的一種機制。咱們在調用操做的時候,至關因而發一個消息給另一個線程。後者說另一個協程,讓其執行某些操做,提交出去以後立馬獲得一個future,後期就能夠經過這個future拿到調用的一些狀態和結果。因此說其實是消息通訊之間的一種機制。而阻塞和非阻塞是一種函數調用的機制。同步

相關文章
相關標籤/搜索