首頁 > 后端開發 > php教程 > 正文

php多線程是什么意思

原創 2019-06-19 14:35:02 0 1318
第七期線上培訓班
PHP在默認的情況下是不支持多線程的,通過安裝pthreads擴展,讓其參數來指定編譯PHP的線程安全方式來使其支持多線程,但是使用的過程中要考慮到線程安全的問題。

線程是操作系統中進行運算調度的最小單位。它被包含在進程中,是進程中的實際運作單位。今天將要分享的是線程知識是有關于PHP的,具有一定的參考價值,希望對大家有所幫助

【推薦課程:PHP教程

多線程的理解

所謂多線程就是在在一個進程中可以并發多個線程,每條線程并行執行不同的任務。多線程大大提高了程序的執行效率,一個多線程比單線程被操作系統調度的概率更大。而且更高效。多個線程可以在多核CPU的多個核心同時運行,加快了運行效率。而且線程間的通信更加簡單。

PHP多線程

在默認情況下PHP是不支持多線程的,要使用多線程需要安裝 擴展,目前常用的擴展有pcnlt,POSIX ,pthreads,但是用的最多的還是pthreads擴展,它通過使用參數來指定來編譯PHP時的線程安全方式,使其支持多線程。

在使用線程之前首先要考慮到線程的安全問題,線程安全指的是某個函數或函數庫在多線程環境中被調用時,能夠正確的處理多線程之間的共享變量,使得程序的功能能夠正確完成

例:

在多線程中由于存在共享變量,很有可能會導致出現以下問題:

存在一個全局數組:$arr = array('a');
A 線程獲取數組長度為1;
B 線程獲取數組長度為1;
A 線程pop出數組元素 $a = array_pop($arr); $a = 'a';
B 線程也pop數組元素 $b = array_pop($arr); $a = null;
但是此時B線程內就出現了錯誤事件,雖設置了數組長度大于0,但是沒有 pop值來

PHP實現線程安全

PHP實現線程安全主要通過 TSRM 機制,通過此機制可以對全局變量和靜態變量進行隔離,并且給每個線程都復制了一份全局變量和靜態變量。各個線程使用的都是主線程的一個備份。這樣就避免了變量沖突,也不會發生線程安全的問題。

PHP 對多線程的封裝保證了線程安全,所以開發人員就不需要在考慮讀寫沖突的問題了,也使得代碼更加安全。不過這樣做也有不好的地方,例如當子線程開始運行時,主線程便再也無法對子線程運行細節進行調整了,失去了消息傳遞能力

總結:以上就是本篇文章的全部內容了,希望對大家有所幫助。

以上就是php多線程是什么意思的詳細內容,更多請關注php中文網其它相關文章!

php中文網最新課程二維碼
  • 相關標簽:php多線程
  • 本文原創發布php中文網 ,轉載請注明出處,感謝您的尊重!
  • 相關文章

    相關視頻


    網友評論

    文明上網理性發言,請遵守 新聞評論服務協議

    我要評論

    專題推薦

    作者信息
    推薦視頻教程
  • PHP編程之道 PHP編程之道
  • PHP零基礎視頻教程 PHP零基礎視頻教程
  • PHP每日小知識(第二季) PHP每日小知識(第二季)
  • 視頻教程分類
    白小姐救世民彩图2019