多進程 多線程的概念

1.併發

兩個或多個任務同時發生一個程序,同時執行多個獨立的任務被稱作爲併發。

在以往的計算機終端和CPU在某一個時刻其實只能執行同一個任務,這個是由它的系統統一調度居你們給每個任務分配固定的時間,對於單核的CPU來說,只要切換的時間頻率夠快夠短,就看起來像是同時在執行好幾個程序。

這個其實不算是真正的併發,這種切換是要有時間開銷的,因爲要保存一些局部的變量,狀態執行進度等等都需要保存下來。切換回來之後需要復原信息。

多處理器計算機:用於服務器和高性能的計算領域

現在的臺式機每塊芯片有多個cpu,雙核,4、8、10核,可以實現真正的多核併發,每一個核裏面執行一些我們的一個程序。

2.進程

運行起來的可執行程序,其實就是一個可執行程序的執行的最小單元就是一個進程。當我們運行了一個可執行程序時,系統就會開啓一個進程。每個進程裏面會有一個主線程。主線長只有一個,我們可以通過這個意義。我們可以在代碼裏面啓動其他的線程,當然這個相乘的話可以與主線程執行不同的東西,可以甚至去走向不同的地方。

其實現場就是程序執行的一個通路,這個方向和執行的程序內容是可以由我們自己來指定的。

3.多線程

並不一定多線程就是好的,因爲感覺開闢一線城市公共點現場分配空間通常是1M,還有一點就是在多個線程進行切換的時候,需要保存上下文,所以說也是有一定的開銷的,並不是說線程越多就越好。

切換會耗費等該屬於程序運行的時間,所以當線程多到一定程度時,切換會消耗一定的時間,反而執行真正程序的時間減少了。

其實多線程就是多個線程,做不同的事情。但是想要評論真多現場的效率不是一件容易的事情,如果他們都訪問同一個資源的話,那效率就不會很高,如果他們分別訪問都是不同的資源,協作完成某一個任務的話,那麼效率就比較高。

4.併發的實現方法

實現併發的手段有兩種

1.通過多個進程實現併發

2.單獨的進程中創建多個線程來實現併發,這個需要我們自己寫代碼來創建,除了主線程之外的其他線程。

5.多進程併發

不過進程之間的通信是實現的關鍵,進程之間的通信方式有比較多的方式。如果在同一個電腦上,可以通過管道,文件,消息隊列和共享內存等方式來實現通信。

進程之間是需要有數據保護的,所以即便是在不同的電腦上弄的話,也需要保證所有的數據的統一時間是一致的。

6.多線程併發

現成的感覺就像輕量級的進程。每個線程都有自己獨立的運行路徑,但是一個進程中的所有線程是共享地址空間的,也就是說他們的內存是共享的。因爲共享內存上面來進行數據通信非常簡單,所以說是用多線程開銷遠遠小於多進程。

共享內存雖然說比較好用,但是他有他的問題,就是如何保證數據的一致性。兩個線程要訪問同步資源的時候。需要保證這個資源在兩個線程之內修改之後結果訪問保持一致。

7.建議

雖然多進程和多線程併發可以混合使用,但是建議優先考慮多線程技術手段,而不是多進程,出於一些開銷方面的考慮。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章