併發和並行從宏觀上來說都是同時處理多路請求的概念。但併發和並行又有區別,並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔內發生。web
在操做系統中,併發是指一個時間段中有幾個程序都處於已啓動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。
並行性指兩個或兩個以上事件或活動在同一時刻發生。在多道程序環境下,並行性使多個程序同一時刻可在不一樣CPU上同時執行。服務器
併發,是在同一個cpu上同時(不是真正的同時,而是看來是同時,由於cpu要在多個程序間切換)運行多個程序。網絡
------------------------------------------------------------------併發
並行,是每一個cpu運行一個程序。socket
打個比方。併發,就像一我的(cpu)喂2個孩子(程序),輪換着每人喂一口,表面上兩個孩子都在吃飯。並行,就是2我的喂2個孩子,兩個孩子也同時在吃飯。網站
①程序與計算再也不一一對應,一個程序副本能夠有多個計算
②併發程序之間有相互制約關係,直接制約體現爲一個程序須要另外一個程序的計算結果,間接制約體現爲多個程序競爭某一資源,如處理機、緩衝區等。
③併發程序在執行中是走走停停,斷續推動的。操作系統
在網絡服務器上,併發是指同一時刻能處理的鏈接數,好比,服務器能創建1000個TCP鏈接,即服務器同時維護了1000個socket,這個服務器的併發量就是1000,可是服務器可能只有單核或者8核,16核等,總之對這1000個socket鏈接的處理也是分時來作的。每一個socket服務器處理的時間若是是1s,那麼該服務器1s內能夠處理完1000個請求,若是每一個socket處理100ms的話,那麼該服務器1s內能夠處理10000個請求。 在這裏咱們先拋出一些概念,若是這些概念都弄清楚了,併發和並行基本就清楚了。 會話:在咱們用電腦工做時,打開的一個窗口或一個Web頁面,咱們能夠把它叫作一個「會話」,擴展到web服務器上,要維護不少個用戶的web頁面訪問,咱們能夠認爲服務器管理了多個「會話」。 併發鏈接數:網站有時候報錯:「HTTP Error 503. The service is unavailable」。但刷一兩下又正常,估計極可能是超過網站的最大併發鏈接數了。併發鏈接指網絡流量管理設備或代理服務器對其業務信息流的處理能力,是可以同時處理的點對點鏈接的最大數目,它反映出設備對多個鏈接的訪問控制能力和鏈接狀態跟蹤能力,這個參數的大小直接影響到設備所能支持的最大信息點數。 併發能夠理解爲服務器最多維護多少個會話數,並行則不同,它關係的是有多少個會話是在同時進行,假若有兩臺服務器(進程),可能並行的數量是2,而併發的數量是1000。 單核cpu的話只能是併發,多核cpu才能作到並行執行