多線程理論筆記

1、多線程:在單個進程中,運行不同的線程,完成不同的工作。

2、線程和進程的區別在於,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器爲其執行上下文.多線程主要是爲了節約CPU時間,發揮利用,根據具體情況而定. 線程的運行中需要使用計算機的內存資源和CPU。

3、消息隊列:協調和控制程序中各個塊之間的執行順序。

4、一些線程模型:

(1)、單線程模型:一個進程只有一個線程,缺點在於完成一個很小的任務也需要佔用很長的時間;

(2)塊線程模型:又稱單線程多塊模型/STA,一個進程擁有多個塊,且每個塊獨有一個線程;程序規定了每個塊中線程的執行時間,再通過消息隊列對這些塊進行串行化控制運行;這種模型比單線程模型的好處在於,可以響應同一時刻的多個用戶請求的任務而不只是單個用戶請求。但它的性能還不是很好,因爲它使用了串行化的線程模型,任務是一個接一個得到執行的。

(3)多線程塊模型:又稱自由線程塊模型/MAT;每個進程只有一個塊,每個塊有多個線程;這些應用程序一般比較複雜,因爲程序員必須提供線程同步以保證線程不會併發的請求相同的資源,因而導致競爭情況的發生。這裏有必要提供一個鎖機制。但是這樣也許會導致系統死鎖的發生。

5、進程與線程的概念:進程和線程都是操作系統的概念。

(1)進程是應用程序的執行實例,每個進程是由私有的虛擬地址空間、代碼、數據和其它各種系統資源組成,進程在運行過程中創建的資源隨着進程的終止而被銷燬,所使用的系統資源在進程終止時被釋放或關閉。

(2)線程是進程內部的一個執行單元。系統創建好進程後,實際上就啓動執行了該進程的主執行線程,主執行線程以函數地址形式,比如說main或WinMain函數,將程序的啓動點提供給Windows系統。主執行線程終止了,進程也就隨之終止。

6、進程池:對於短時間運行的任務尤其是經常需要開始的那些,進程池是一個非常好的選擇。進程池可以同時運行多個任務,還可以使用框架類。對於資源緊缺需要進行同步的情況來說,它可以限制某一時刻只允許一個線程訪問資源。這種情況可以視爲給線程實現了鎖機制。

7、基本步驟:

(1)創建線程:

創建一個新的Thread對象的實例。Thread的構造函數接受一個參數:

Thread DummyThread = new Thread( new ThreadStart(dummyFunction) );

(2)執行線程:

使用Threading命名空間裏的start方法來運行線程:

DummyThread.Start ();

(3)組合線程:

經常會出現需要組合多個線程的情況,就是當某個線程需要其他線程的結束來完成自己的任務。假設DummyThread必須等待DummyPriorityThread來完成自己的任務,只需要這樣做:

DummyPriorityThread.Join() ;

(4)暫停線程:

使得線程暫停給定的秒

DummyPriorityThread.Sleep(<Time in Second>);

(5)中止線程:

如果需要中止線程可以使用如下的代碼:

DummyPriorityThread.Abort();

8、實現多線程有兩種方法:

(1)繼承Thread類,

(2)實現Runable接口。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章