從很久之前在學校到現在我們程式設計的時候經常都有聽說到併發程式設計,偶爾也會聽到說並行,但我們很多人其實都不太清除併發與並行具體的區別在哪;我們剛開始學習程式語言的時候我相信我們寫的都是序列程式,一步接著一步來,可以說這比併發程式更不容易出錯,但在效能上要遠不如併發;還有一種併發具有很強容錯性:分布式程式,分布式程式也算是併發程式,還可以具有很強的容錯性,可以分開部署;
併發與並行有著本質上的區別。
併發指程式在同一時間只能做乙個操作,但是可以在不同的時間點()做多個操作;
如:人是乙個多執行緒的物種,只有你乙個人的時候你開啟多執行緒「一邊炒菜,一邊玩ipad」,但其實在某一時間點,人只可以做一件事,當我們翻炒菜的時候不可能還在玩ipad,當我們在玩ipad的時候不可能還能夠翻炒菜,只有我們不在翻炒的時候才能夠玩ipad,只有我們放下手中的ipad的時候才能夠翻炒,但從時間概念上看我們還是在邊炒菜邊玩ipad;這樣炒出來的菜可能不好吃,哈哈,就如併發程式設計一樣存在資源的競爭,這裡競爭的資源是手、眼睛,在計算機裡是cpu,處處存在危機,一不小心就燒焦了,哈哈!
並行指在同乙個時間點可以做幾個相同的操作或幾個不相同的操作;
如:現在家有你和你女朋友兩個人,這個時候就不用你炒菜了,在你女朋友炒菜的時候你就可以嗶哩啪啦的玩ipad了,等你女朋友做好飯就你可以吃了(不是好男人);就如現在很多計算機中都有多個cpu,我們可以寫出比併發效能更高可以同時跑在多個cpu上的程式,但前提是你要有條件(多個cpu的計算機);
併發不是並行,有時候並行也是併發,有時候只是並行不是併發;只有當並行從整體上看是多個任務時才也是併發,但並行只是乙個任務的時候那只是並行;
這個系列說的只是程式設計中的併發模型,可能有時候也會談到並行,但重點是併發模型;
併發基本概念
先了解些併發的基本概念。程式 是資料和指令的有序集合,本身無意義,就是乙個靜態的概念。程序 是執行程式的乙個執行過程,作業系統的資源分配,是動態概念。執行緒 是程式執行過程中的確切操作的執行物件。參照物為cpu 併發指單個cpu同時處理多個執行緒任務,cpu在反覆切換任務執行緒,實際還是序列化的 並...
關係模型之基本概念
關係模型的提出 是從表及表的處理方式中抽象出來的,是在對傳統表及其操作進行數學化嚴格定義基礎上,引入集合理論與邏輯學理論提出來的 是資料庫的三大經典資料模型之一 sql是建立在關係模型基礎之上的 關係模型的研究 關係模型就是處理表的 關係模型的三要素 組成 三要素 關係模型與關聯式資料庫語言的關係 ...
關係模型基本概念
1.關係模型的提出 關係模型最早是由e.f codd在1970年提出來的。是從表 table 以及表的處理中抽象出來的。是在傳統表以及其上面的操作嚴格化的數學定義上引入 集合理論 與 邏輯學理論 關係模型是資料庫的三大典型模型之一。也是現在大多數商業資料庫使用的模型。2.關係模型研究的內容 形象的說...