1. 程式人生 > >程序和執行緒的區別?同步和非同步的區別?並行和併發的區別?

程序和執行緒的區別?同步和非同步的區別?並行和併發的區別?

  • 程序是資源的分配和排程的一個獨立單元,而執行緒是CPU排程的基本單元
  • 同一個程序中可以包括多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),一個進行至少包括一個執行緒。
  • 程序的建立呼叫fork或者vfork,而執行緒的建立呼叫pthread_create,程序結束後它擁有的所有執行緒都將銷燬,而執行緒的結束不會影響同個程序中的其他執行緒的結束
  • 執行緒是輕兩級的程序,它的建立和銷燬所需要的時間比程序小很多,所有作業系統中的執行功能都是建立執行緒去完成的
  • 執行緒中執行時一般都要進行同步和互斥,因為他們共享同一程序的所有資源
  • 執行緒有自己的私有屬性TCB,執行緒id,暫存器、硬體上下文,而程序也有自己的私有屬性程序控制塊PCB,這些私有屬性是不被共享的,用來標示一個程序或一個執行緒的標誌