並行運算
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Disambig_gray.svg/25px-Disambig_gray.svg.png)
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Critical_section_fg.jpg/220px-Critical_section_fg.jpg)
並行運算,電腦運算一類,另名並發運算,專門研究同期有多過一件事要做,會遇到有何難題,以及如何解決,由得出大量相關演算法。英文concurrent computing,直譯就係同期運算,可見其時間本質。同期處理幾件事,後果不可預知,即唔確定,皆因做事過程孰先孰後,當中可能互相干擾。要有較合乎順序並正確結果,有賴訂定規則同演算法。
當初電腦,只能一件做完到另一件,若然要等周邊裝置做好,處理器就投閒置散。大概一九六〇年前後,各方就嘗試一次過讀入幾個程式,以便盡用處理器,咁就需要程式管理,自此開啟並行運算之研究。隨住電腦技術發展,管理程式就化成電腦操作系統,同並行運算息息相關,如分割處理器時間,幾個程式交替用。亦要兼顧讀寫規舉,免得資料混亂。
另一個範疇隨自網絡出現,分散運算到幾部電腦,外間睇起一部機做事咁。有啲決定必須喺各機程式合作,咁有時遇到網絡唔可靠,要研究有錯下仍能運作等問題。再有資料庫需要複制唔同機上,咁運行時又要資料一致,咁亦涉及並行運算。加密貨幣所用紀錄,亦不脫並行運算。故此並行喺唔同電腦範疇,都有可用到。
並行運算與平行運算、分散運算,時常拎來比較。但實情後兩者會用到並行運算。現今並行運算,亦多假設有平行同分散,盡用平行處理器同網絡,以縮短工作時間、畀用者感覺更加順暢。
系統以並行運算為基礎,就為並行系統。系統有管理,專門協調程式並行。系統可以為單獨程式,又或單獨電腦,又或一組網絡。
現今大多數電腦同網絡,都已經有並行運算元素。故此一般編程,並不必自行顧及並行。然而有時想用起來順暢,或者想借用平行運作,咁可以就劃分成子程式組件,各自運作,配以管理用子程式,精細管理並行運算。
程式語言用得操作系統之程式接口,都做得到並行運算。有啲以程式庫形式來用,亦有啲內建關鍵字來用。所謂並行程式語言,當今至少會有綫程與之間傳信。有啲會容許共享資源,有啲禁止。有啲就用到分散運算。