關於執行緒的一些概念
首先,什麼是執行緒,執行緒是程式執行的最小單元,有時也稱之為輕量級程序。乙個標準的執行緒一般有執行緒id,指標,暫存器和堆疊組成。通常乙個程序由乙個到多個執行緒組成,各個執行緒之間會共享程式的記憶體空間,所謂記憶體空間也就是資料段、**段、資料段和一些程序級資源等。
其次,為什麼要使用多執行緒,與單執行緒相比的好處又有那些
1.某個操作可能會陷入長時間的等待。等待的執行緒會進入睡眠狀態,無法繼續執行。多執行緒執行的話,可以有效利用時間。
2.某個操作會消耗大量的時間,如果只有乙個執行緒,程式與使用者之間的互動可能會中斷,多執行緒可以讓乙個執行緒負責操作,另乙個執行緒負責互動。三甲的活,是單執行緒的,在呼叫計算程式後,計算進行,軟體無響應,無法執行其他操作,待到計算完畢,軟體恢復正常,最開始我以為軟體有沒發現的bug,畢竟是小菜鳥,哎,現在來看,呼叫的計算程式的時候,應該再起乙個程序就好了。
4.現在的機器基本上是多核,都具有了併發處理的能力,如果不使用多執行緒,將無法合理利用機器的效能。
5.相對於多程序應用,多執行緒在資料共享方面效率要高很多。這條好像現在還沒理解,具體的效率高如何體現?mark一下??????
再次,關於執行緒的訪問許可權和排程優先順序
執行緒私有的部分包括區域性變數、函式的引數、tls資料。執行緒之間共享的資料,這部分資料也是程序所有的,主要包括全域性變數、堆上的資料、函式的靜態變數,程式**及其他程序級資料。
關於排程,首先我們需要清楚的是執行緒至少擁有的三種狀態,執行、就緒、等待。需要的排程出現的原因是由於執行緒數多於處理器數,這時候肯定有執行緒處於執行,處於就緒和等待狀態等。具體的排程方法:主要包時間片輪轉和優先順序排程。所謂時間片輪轉就是讓各個執行緒都執行一小段時間,然後輪轉給其他執行緒。而優先順序排程是給各個執行緒不同的優先順序,根據優先順序排程。
最後,關於執行緒安全,這塊要注意的乙個問題是有乙個windows api 可能會用到,interlocked api.
執行緒的安全其實主要是由於多執行緒處在乙個多變的的環境中,可訪問的全域性變數和其他資料可能被其他執行緒改變,最終造成執行結果的不可控。注意原子操作和鎖。原子操作用於比較簡單的場合。
day 1 心理統計中常用的一些概念和統計符號
總體 指具有某些共同的 可觀測的特徵的一類事物的全體,構成總體的每乙個基本單位稱為個體 樣本 從總體中選出來的個體集合 隨機取樣 從總體中取樣本,要求總體中的每乙個個體被抽取到的概率相同,用隨機取樣抽取的樣本叫隨機樣本 描述統計 指用來整理 概括 簡化資料的統計方法,側重於描述一組資料的全貌,表達一...
資料結構day1 一些基本定義
1.什麼是資料結構 理解為資料項的組織及其相關操作。2.為什麼需要資料結構 提高程式效率。3.抽象資料型別與資料結構 1 什麼是資料型別 型別是一組值的集合。資料型別即乙個型別以及定義在該型別上的一組操作。資料項只是資料型別的乙個成員,是該型別的一條記錄。2 抽象資料型別adt 僅定義了資料項的邏輯...
關於執行緒一些鎖的概念和擴充套件
一.擴充套件 臨界區 指的是乙個訪問共用資源 例如 共用裝置或是共用儲存器 的程式片段,而這些共用資源又無法同時被多個執行緒訪問的特性。當有執行緒進入臨界區段時,其他執行緒或是程序必須等待 例如 bounded waiting 等待法 有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共...