多線程的概念原理過程

1、什麼是多線程
· 在一個程序中,一些獨立運行的程序片段叫做「線程」(Thread),利用它編程的概念就叫做「多線程處理」。php


2、概念

· 多線程是爲了同步完成多項任務,不是爲了提升運行效率,而是爲了提升資源使用效率來提升系統的效率。線程是在同一時間須要完成多項任務的時候實現的。
· 最簡單的比喻多線程就像火車的每一節車箱,而進程則是火車。車箱離開火車是沒法跑動的,同理火車也不可能只有一節車箱。多線程的出現就是爲了提升效率。同時它的出現也帶來了一些問題。html


3、線程
· 每一個正在系統上運行的程序都是一個進程。每一個進程包含一到多個線程。進程也多是整個程序或者是部分程序的動態執行。線程是一組指令的集合,或者是程序的特殊段,它能夠在程序裏獨立執行。也能夠把它理解爲代碼運行的上下文。因此線程基本上是輕量級的進程,它負責在單個程序裏執行多任務。一般由操做系統負責多個線程的調度和執行。
· 線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不一樣的工做,稱爲多線程.
· 線程和進程的區別在於,子進程和父進程有不一樣的代碼和數據空間,而多個線程則共享數據空間,每一個線程有本身的執行堆棧和程序計數器爲其執行上下文.多線程主要是爲了節約CPU時間,發揮利用,根據具體狀況而定. 線程的運行中須要使用計算機的內存資源和CPU。編程


4、好處
· 使用線程能夠把佔據時間長的程序中的任務放到後臺去處理
· 用戶界面能夠更加吸引人,這樣好比用戶點擊了一個按鈕去觸發某些事件的處理,能夠彈出一個進度條來顯示處理的進度
· 程序的運行速度可能加快
· 在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種狀況下能夠釋放一些珍貴的資源如內存佔用等等。
 . 多線程技術在IOS軟件開發中也有舉足輕重的位置。
 . 線程應用的好處還有不少,就不一一說明了數組

5、缺點
· 若是有大量的線程,會影響性能,由於操做系統須要在它們之間切換。
· 更多的線程須要更多的內存空間。
· 線程可能會給程序帶來更多「bug」,所以要當心使用。
· 線程的停止須要考慮其對程序運行的影響。
· 一般塊模型數據是在多個線程間共享的,須要防止線程死鎖狀況的發生。安全

6、實際意義
· 一個採用了多線程技術的應用程序能夠更好地利用系統資源。其主要優點在於充分利用了CPU的空閒時間片,能夠用盡量少的時間來對用戶的要求作出響應,使得進程的總體運行效率獲得較大提升,同時加強了應用程序的靈活性。更爲重要的是,因爲同一進程的全部線程是共享同一內存,因此不須要特殊的數據傳送機制,不須要創建共享存儲區或共享文件,從而使得不一樣任務之間的協調操做與運行、數據的交互、資源的分配等問題更加易於解決。網絡

7、線程同步
· 在多線程應用中,考慮不一樣線程之間的數據同步和防止死鎖。當兩個或多個線程之間同時等待對方釋放資源的時候就會造成線程之間的死鎖。爲了防止死鎖的發生,須要經過同步來實現線程安全。在Visual Basic中提供了三種方法來完成線程的同步。在Java中可用synchronized關鍵字。多線程

8、PHP多線程原理、過程
1.主線程在適當的時候會建立子線程,子線程建立後需使用start()方法來啓動;
2.當子線程啓動後當即觸發run()方法,進入子線程工做任務運行區間,此區間的代碼段同主線程及其它子線程是並行同時運行的;
3.子線程在完成了各項的任務後,還是存活狀態(空閒狀態),並無終結,它的各類狀態還是可查的,它的各屬性仍可被訪問的,子線程是伴隨着整個進程的結束而結束;
4.若run()方法裏遭遇手工執行了exit() die()等退出命令,或run()方法裏遇程序報錯、拋出異常則會提早結束代碼段的執行,但當前子線程仍爲存活狀態;
 
9、PHP多線程目前(pthreads V0.1.0)的不足
1.子線程間沒法相互通信;
2.子線程對象屬性類型目前只能爲標量(整型、浮點型、字符型、布爾)和空(NULL),不支持複合數據類型(數組、對象)及資源類型;
3.若在子線程對象中實例化出另外一個對象(如:對象A),那麼在子線程內也只能訪問對象A中的標量屬性(其它的如數組類型屬性、對象類型屬性及資源類型屬性一概按空NULL對待)。 

性能

百度百科更多詳情: http://baike.baidu.com/link?url=KSFVp2zoqTXdbNo0Fj6N1rHzBPE5O9mqNiW_V4Ekbs3irvXddvDz2XlCaWWUstvpurl

http://cn2.php.net/manual/zh/book.pthreads.php
http://wenku.baidu.com/link?url=IZiELrTcqTg1n4BjfAhDU44NrNYfnjrreYogTE3pkvn67ts6xEslpcRvSz-XYQTP4aQW047nb-9qaSz5pGZlYFAHvsFpEOtsSliyixACVUi&pn=50
http://www.csdn.net/tag/pthreads
http://www.doc88.com/p-694922321313.html 操作系統

相關文章
相關標籤/搜索