C 併發實戰 (一)併發基本概念

2022-07-11 07:48:09 字數 1009 閱讀 6571

併發,最簡單的理解就是,兩個或者以上的活動同時進行。舉個比較實際的例子,你可以手腳並用,兩隻手做不同的動作等等。

在計算機中的「併發」,是指乙個系統可以同時執行多個獨立的活動。在以前大多數計算機都只有乙個處理單元(或者核心),這種計算機在同一時刻只能執行乙個任務,任務只能乙個乙個的執行,但是這樣的計算機可以通過任務的高速切換來產生「併發」的假象。

在現如今,擁有多個處理器的計算機已經遍地都是,這些計算機可以真真正正的在同一時刻執行多個獨立的任務,這樣的被稱為「硬體併發」。

看到這裡,可能會說速度很重要,多程序併發你可真是個小老弟。多程序併發存在的意義是什麼?它的優點是什麼?

多程序乙個很大的優點就是程序間非常獨立,除了通訊之外基本不會互相影響,比如兩程序跑著跑著,乙個程序突然死了,另乙個程序別提傷心了,連看都不看一眼就繼續跑(可能比較極端,但是多程序的架構乙個重要的角度就是安全),最有力的乙個例子就是chrome瀏覽器,chrome瀏覽器採用多程序沙盒架構,為的就是當乙個程序崩潰時不會影響主程序和其他程序。

併發的另乙個途徑是單個程序中執行多個執行緒,執行緒在很多書中都被稱為「輕量級的程序」,每個執行緒可以相互獨立執行,但是程序中的所有執行緒都享有共同的位址空間,並且執行緒間擁有不少共享資料(那麼執行緒間同步和死鎖之類的概念就引出來了)。

那麼缺點就來了,執行緒間的同步並不簡單,是挺複雜的乙個事情,並且加鎖之類的操作也有成本,會耗費一些資源

同時安全性問題也存在,比起多程序併發來說,多執行緒併發更像是四人三腳跑步,乙個執行緒倒下了,其他三個可能也就完蛋了。

為了效能而使用併發

在同一時刻幹好幾個任務,肯定比乙個乙個任務執行來的快。(這個說法其實並不準確,這裡的意思是為了在硬體條件允許的情況下為了提高效能而使用併發,需要綜合考慮)

為了劃分關注點而使用併發

如果一場派對的舉辦都讓乙個人幹,肯定會手忙腳亂,也不易於管理。任務也是一樣,又是讀檔案又是網路請求啥的,就算計算機比人的頭腦好一些,不會手忙腳亂,但是任務是要人來寫和管理的。一大鍋混在一起是很難進行管理的。

使用併發的乙個目的就是為了將任務拆解,將關注點劃分開。易於管理。

併發基本概念

先了解些併發的基本概念。程式 是資料和指令的有序集合,本身無意義,就是乙個靜態的概念。程序 是執行程式的乙個執行過程,作業系統的資源分配,是動態概念。執行緒 是程式執行過程中的確切操作的執行物件。參照物為cpu 併發指單個cpu同時處理多個執行緒任務,cpu在反覆切換任務執行緒,實際還是序列化的 並...

併發與高併發程式設計實戰01 基本概念

前言 抽象的東西之所以難易理解,是因為它短。若是對應的解釋能和具象的實物聯絡起來那就容易理解了 併發與高併發是兩個概念 併發同時擁有兩個或者多個執行緒,如果程式在單核處理器上執行,多個執行緒將交替地換入或者換出記憶體,這些執行緒是同時 存在 的,每個執行緒都處於執行過程中的某個狀態,或者執行期,休眠...

一 併發簡介

1.1併發簡史 早期的馮丶諾依曼型計算機的主要特點是 1.數字計算機的數制採用二進位制 2.計算機應該按照程式順序執行。之後伴隨著作業系統的誕生,使得計算機每次可以執行多個程式,每個程式執行在單獨的程序中。早期的分時系統中,每乙個程序相當於一台虛擬的馮丶諾依曼型計算機。程序是作業系統分配資源的最小單...