1. 程式人生 > >程序、執行緒及共享記憶體學習筆記

程序、執行緒及共享記憶體學習筆記

  • 程序:計算機上每個執行的活動,執行一個可執行程式是一個程序,開啟一個軟體是一個程序,開啟一個終端是一個程序等等。
  • 多程序:為了充分利用計算機資源產生了多程序的執行方式。通俗來講就是在同一時間做多個事情,從而可以充分利用計算機資源還可以提高程式的執行效率。在建立一個新的子程序後,子程序會會獲得計算機分配的資源,並拷貝父程序的資料。
  • 子程序與父程序:我們編寫的一段程式執行時就是一個程序,當我們在這段程式碼中呼叫特定函式新建立一個程序時,新建立的程序就是當前程序的子程序,而對於新建立的程序來說,當前程序就是它的父程序,子程序通過拷貝等手段繼承父程序在建立子程序之前的資料、屬性等。
  • 多執行緒:上面說到程序是計算機上執行的每個活動。在實際程式設計中,一個程序中會有很多工需要做。從而引發思考:一個程序中的多個任務是否也可以併發的執行?因為有些任務之間是沒有聯絡的,也就是說有些任務完全可以同時進行而沒有依賴問題。答案就是執行緒。與多程序相同的是,多執行緒也是為了讓計算機資源得到充分利用並且程式的執行效率也會得到提高,與多程序不同的是,多執行緒並沒有拷貝這種需求,它實際上是把一個程序分成多個片段。
  • 重入性:儘管多執行緒系統開銷少,但是也難免有缺陷,那就是重入性問題,使用多執行緒程式設計需要保證被多執行緒多次執行的函式的可重入性,所謂重入性就是函式被多個執行緒多次呼叫皆能正常執行。見附錄2,有幾個保證函式可重入性的條件。
  • 執行緒安全:使用多執行緒程式設計除了需要保證函式的可重入性還需要保證執行緒安全,另外,可重入的函式一定是 執行緒安全的,但是反之不成立。
  • 共享記憶體:根據字面意思就很好理解,通過把不同的程序中的邏輯記憶體對映到同一塊實體記憶體中,進而允許兩個程序共享同一塊邏輯記憶體空間。它是程序間通訊的一種方式。共享記憶體本身並沒有提供同步機制。