回覆列表
  • 1 # 使用者5916393697425

    所謂程序(process)就是一塊包含了某些資源的記憶體區域。作業系統利用程序把它的工作劃分為一些功能單元。程序中所包含的一個或多個執行單元稱為執行緒(thread)。程序還擁有一個私有的虛擬地址空間,該空間僅能被它所包含的執行緒訪問。執行緒只能歸屬於一個程序並且它只能訪問該程序所擁有的資源。當作業系統建立一個程序後,該程序會自動申請一個名為主執行緒或首要執行緒的執行緒。

    程序並不是真正意義上的同時執行,而是併發執行。

    一個程序至少有一個執行緒。執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

    執行緒在執行過程中與程序的區別在於每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

    從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用來實現程序的排程和管理以及資源分配。

    多個執行緒或程序”同時”執行只是感官上的一種表現。事實上程序和執行緒是併發執行的,OS的執行緒排程機制將時間劃分為很多時間片段(時間片),儘可能均勻分配給正在執行的程式,獲取CPU時間片的執行緒或程序得以被執行,其他則等待。而CPU則在這些程序或執行緒上來回切換執行。微觀上所有程序和執行緒是走走停停的,宏觀上都在執行,這種都執行的現象叫併發,但是不是絕對意義上的“同時發生。

  • 中秋節和大豐收的關聯?
  • 八核i9版2019 MacBook Pro的綜合性能,較舊款有多大提升?