理解併發進程

1、順序程序設計:併發

順序程序設計具備四種特性:(1)執行的順序性(2)環境的封閉性(3)結果的肯定性(4)過程的可再現性。程序順序執行與其速度無關,即程序的最終輸出僅與初始輸入數據有關,而與時間無關。spa

2、併發程序設計:設計

併發進程的特性:併發進程多是無關的,也多是交互的。無關的併發進程是指它們分別在不一樣的變量集合上的操做,一個進程的執行與其餘併發進程的進展無關,即一個進程不會改變另外一個與其併發執行的進程的變量。然而,交互的併發進程共享某些變量,一個進程的執行可能會影響其餘進程的執行結果,交互的併發進程之間具備制約關係。所以,進程的交互必須是有控制的,不然會出現不正確的計算結果。進程

例子:程序設計

併發程序設計:class

在一個單處理器系統中,從磁盤讀入數據經加工後打印輸出,不採用併發程序設計時,解決這個問題的程序是循環地執行讀入一批數據,而後,加工打印輸出。執行這個程序時,磁盤機、處理器和打印機順序執行輸入、加工和輸出操做。雖然計算機的外圍設備和處理器能夠並行操做,但執行上述程序時它們只能串行工做。若是採用併發程序設計,解決上述問題的程序由如下兩個進程組成。①讀盤進程:循環地執行讀入一批數據,加工後送入輸出緩衝區;②打印進程:循環地執行從緩衝區取出數據打印輸出。在打印進程執行打印輸出時只須要打印機,而不須要磁盤機和處理器。所以,在打印進程啓動打印機後,在打印機輸出的過程當中能夠啓動讀盤進程輸入和加工數據。執行這個程序時,處理器、磁盤機和打印機並行工做,能縮短程序執行的時間,提升計算機系統的效率。效率

順序程序設計:變量

a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水,這固然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序爲: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3若是改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構能夠獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三部曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數狀況下順序結構都是做爲程序的一部分,與其它結構一塊兒構成一個複雜的程序,例如分支結構中的複合語句、循環結構中的循環體等。循環

相關文章
相關標籤/搜索