C 多執行緒學習筆記

2021-05-12 19:06:02 字數 2215 閱讀 4509

一、基本概念

bi(@'d.z9k&l;[$b]0      程序:當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。

q7[j&ka&ik!z"b0      執行緒:執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(棧指標、程式計數器等),但**區是共享的,即不同的執行緒可以執行同樣的函式。

'k&wg3^1t/doa o1q0      多執行緒:多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。

1fwyar#ur(h0      靜態屬性:這個類所有物件所公有的屬性,不管你建立了多少個這個類的例項,但是類的靜態屬性在記憶體中只有乙個。

二、多執行緒的優劣itpub個人空間} n+s+[?(].o(v z4r0      缺點:執行緒也是程式,所以執行緒需要占用記憶體,執行緒越多占用記憶體也越多;itpub個人空間a ` fenu ?5fl

多執行緒需要協調和管理,所以需要cpu時間跟蹤執行緒;itpub個人空間e0mo8v'i/h

執行緒之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;itpub個人空間1nvb.v5    itpub個人空間p[5z"w-m3^

}  1_s+gm!e0           }itpub個人空間p1y po ]waun

public class ******

w2p-`/[tw0           0                    alpha alpha = new alpha();   itpub個人空間:m3i-l h&b[3]nr

//這裡建立乙個執行緒,使之執行alpha類的beta()方法  itpub個人空間8g/m)]a?r

thread thread = new thread(new threadstart(oalpha.beta));  itpub個人空間 h n$pjk

othread.start(); // 程式執行的是alpha.beta()方法

:f*j$xwoe+z:k%y0                    while (!othread.isalive)    itpub個人空間5kd3m;|k"zj)c

thread.sleep(1);  //讓主線程停1ms       itpub個人空間}&m] vswrja'k2d0                            

u3        

*u0ihn0ql q0                    return 0;  itpub個人空間e},qpm,y/~_

}  2@m,jw q:km1y0            }

?8u@ n+lb"@0      }

五、thread.threadstate 屬性

})k v$g3oc0      aborted:執行緒已停止;itpub個人空間)tj-j fu8oo

abortrequested:執行緒的thread.abort()方法已被呼叫,但是執行緒還未停止;itpub個人空間-i_ x8n+y&w

background:執行緒在後台執行,與屬性thread.isbackground有關;不妨礙程式的終止

.vo)eq;hk8k0      running:執行緒正在正常執行;

v:x%t tj x0      stopped:執行緒已經被停止;

` /$m#?*dk0      stoprequested:執行緒正在被要求停止;itpub個人空間;b4w0l@b/1l#_6a

suspended:執行緒已經被掛起(此狀態下,可以通過呼叫resume()方法重新執行);

9/$jq@wa0      suspendrequested:執行緒正在要求被掛起,但是未來得及響應;itpub個人空間5f-jtabm0]`

unstarted:未呼叫thread.start()開始執行緒的執行;itpub個人空間[8jz)q s

waitsleepjoin:執行緒因為呼叫了wait(),sleep()或join()等方法處於封鎖狀態;

六、執行緒的優先順序

d~w.fp"ww#k0      由高到低分別是highest,abovenormal,normal,belownormal,lowest;系統預設為threadpriority.normal

[f1b,xo/mlgw0      指定優先順序的**:mythread.priority=threadpriority.lowest;

C 多執行緒學習筆記

執行緒和程序的關係 windows系統是乙個多執行緒的作業系統。乙個程式至少有乙個程序,乙個程序至少有乙個執行緒。程序是執行緒的容器。多執行緒的優點 1 多執行緒提高cpu利用率,乙個執行緒處於等待狀態時,cpu就會去執行另外的執行緒。2 提高cpu利用率,就可以直接提高程式的整體執行速度。多執行緒...

C 多執行緒 學習筆記(二)

程序 基於程序的多工處理是程式的併發執行。執行緒 基於執行緒的多工處理是同一程式的片段的併發執行。c 多執行緒寫法,從入門開始,一點點往下寫,我也不知道能學到精通還是到放棄。根據主流的一些部落格技術文件,循序漸進,適於新手入門。首先第乙個程式是直接使用多執行緒建立函式建立多個執行緒。編譯的時候需要靜...

C 多執行緒程式設計學習筆記

建立執行緒 void fun 執行緒函式 thread t1 fun t1.join join 是兩個執行緒交匯的意思,工作執行緒和主線程在此處交匯,jion 之後的主線程會阻塞直到工作執行緒執行結束。detach 使執行緒函式脫離執行緒物件,即當執行緒物件銷毀了執行緒函式依然可能執行。通常不推薦這...