程序占有的資源
執行緒占有的資源
位址空間
棧全域性變數
暫存器開啟的檔案
狀態等…
程式計數器
簡單的理解執行緒安全的問題:多執行緒程式在執行時候,可能會同時對乙個變數進行操作,操作的時候,一般執行緒會將這個變數的值copy到 自身執行緒的巨變變數中,再進行操作,此時可能就會發生 讀寫時資料不同步(資料已經被其他執行緒操作了,自身執行緒操作時讀取的值已經是舊的了)的問題。
程序可以申請和擁有系統資源,程序是乙個實體,程式的執行依賴於、主存(存放程式和程式處理的資料)cpu(執行**)等…(比如io),而程序相當於乙個環境,是控制這些作業系統硬體的實體,在作業系統中,乙個系統上可以執行多個程序,執行的程序一般是多於執行它們的cpu 個數的, 所以通常乙個cpu 可能需要執行多個程序任務,乙個cpu 就像是乙個工人,他乙個時間節點只能做一件事情,所以 cpu 得頻繁的在多個 程序中切換(上下文切換),這種現象就是併發執行。
並行執行的概念是指 多個程式在多個cpu上同時執行,「並行」概念是併發概念的乙個子集,我們可以編寫乙個並行程式,但是如果沒有足夠的cpu來執行,那麼最終就變成了併發執行
併發:同時有很多任務需要做,可以序列執行也可以並行執行並行:可以同時(嚴格意義上的)做多個任務
知乎
python程序與執行緒,同步與非同步,並行併發
from multiprocessing import process,pool import os import time class myprocess process def init self,wtime process.init self self.wtime wtime defrun s...
一 併發與並行,程序與執行緒
前言 在學習多執行緒的時候,我們必不可少的要寄出幾個概念,這就是併發與並行 程序與執行緒之間的關係與區別,這是我們學習多執行緒最基礎的只是,有只充分理解這個的概念,接下來在多執行緒的學習中才能更加深入充分。一 併發與並行 併發的概念 指乙個時間段內可以做多個事情 為了更加深入的理解舉乙個例子 就比如...
並行與併發的區別?執行緒與程序的區別?
假設乙個有三個學生需要輔導作業,幫每個學生輔導完作業是乙個任務 順序執行 老師甲先幫學生a輔導,輔導完之後再取給b輔導,最後再去給c輔導,效率低下 很久才完成三個任務 併發 老師甲先給學生a去講思路,a聽懂了自己書寫過程並且檢查,而甲老師在這期間直接去給b講思路,講完思路再去給c講思路,讓b自己整理...