一、併發
無論是並行還是併發,在使用者看來都是'同時'執行的,不管是程序還是執行緒,都只是乙個任務而已,真是幹活的是cpu,cpu來做這些任務,而乙個cpu同一時刻只能執行乙個任務。
併發:是偽並行,即看起來是同時執行。單個cpu+多道技術就可以實現併發,(並行也屬於併發)
二、並行
並行:並行:同時執行,只有具備多個cpu才能實現並行
將多個cpu必須成高速公路上的多個車道,程序就好比每個車道上行駛的車輛,並行就是說,大家在自己的車道上行駛,會不影響,同時在開車。這就是並行。
有四個核,六個任務,這樣同一時間有四個任務被執行,假設分別被分配給了cpu1,cpu2,cpu3,cpu4,一旦任務1遇到i/o就被迫中斷執行,此時任務5就拿到cpu1的時間片去執行,這就是單核下的多道技術。
而一旦任務1的i/o結束了,作業系統會重新呼叫它(需知程序的排程、分配給哪個cpu執行,由作業系統說了算),可能被分配給四個cpu中的任意乙個去執行
並行程式設計 併發級別
1.1 wait freedom 無等待併發 wait freedom 指的是每乙個執行緒都一直執行下去而無須等待外部條件,整個流程中任何操作都能在乙個有限的步驟內完成,這是最高的併發級別,沒有任何阻塞。結合之前原子操作部分的知識,可以簡單認為能夠直接呼叫乙個原子操作實現的演算法或程式就屬於wait...
java併發程式設計 並行和併發(1)
1.為什麼需要並行?效能 在多核cpu提高效能業務需求 平行計算還出於業務模型的需要 並不是為了提高系統效能,而是確實在業務上需要多個執行單元。比如http伺服器,為每乙個socket連線新建乙個處理執行緒 讓不同執行緒承擔不同的業務工作 簡化任務排程 2.概念 同步 synchronous 和非同...
c 併發程式設計 01 併發與並行
並行 parallel 指在同一時刻,有多條指令在多個處理器上同時執行。所以無論從微觀還是從巨集觀來看,二者都是一起執行的。併發 concurrency 指在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在巨集觀上具有多個程序同時執行的效果,但在微觀上並不是同時執行的,只是把時間分...