日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Perl多進程概念解析

你對Perl多進程的概念是否熟悉,它和多線程有什么區(qū)別呢,本文介紹了Perl多進程的用法和適用場景,以及Perl多進程和多線程的關系。

在IT產品系統(tǒng)測試的自動化項目中,經常有并行處理多個子任務的需求,為了提高測試效率,就需要用到多進程或者多線程編程。本文介紹了Perl多進程的用法和適用場景,以及Perl多進程和多線程的關系。同時結合企業(yè)級IT產品系統(tǒng)測試的自動化特點,介紹了Perl多進程在這方面的應用。

Perl多進程

Perl語言是一種非常強大的腳本語言,其廣泛應用于系統(tǒng)維護,CGI(CommonGatewayInterface)編程,數據庫編程和自動化測試中。

多任務和并發(fā)處理一度被看作是判定優(yōu)異操作系統(tǒng)的一個特性;同樣任何優(yōu)秀從而流行的編程語言都會有并發(fā)的應用,而且都有各自的實現方法。Perl最開始在并發(fā)方面的應用就是多進程。

Perl多進程的用戶接口是fork()函數以及對系統(tǒng)fork函數封裝的一些module。我們在使用Perl語言編程時,如果一個任務的某一個段可以或者需要并發(fā)很多執(zhí)行,那么我們就會使用Perl的多進程編程,例如同時向數據庫遞交多個記錄的查詢,同時完成多個系統(tǒng)信息的收集等等。

Perl的多進程是這樣實現的:主進程每fork一個子進程,會把當前(主進程的)內存空間的所有變量都復制一份傳到新的進程里面,達到數據共享的目的。此外,主進程和子進程可以通過信號、管道等來通信。

在處理并發(fā)的方案中,多進程依靠內存空間獨享提供了優(yōu)秀的容錯性和健壯性。一個多進程的系統(tǒng)不會由于其中一個進程的狀態(tài)不良而崩潰,每個進程都相對獨立地運作,很少會相互影響。

內存空間獨享也造就了多進程不可避免的劣勢:資源負荷以及通信復雜,對于Perl來說,每個子進程都可以看作主進程的拷貝,這多少有些內存浪費,而且主進程的關鍵變量如果是“淺復制”到子進程的話,將會帶來一些意想不到的錯誤。另外,進程的創(chuàng)建和回收會帶來許多額外的負載,因此應當盡量避免頻繁地創(chuàng)建進程。

多進程之間的通信方式有socket,管道,信號量等。在Linux平臺上,對于進程間大量信息的交互情況,最常用的是文件;這在用戶空間進程和系統(tǒng)內核空間進程之間的通信中的最為常用。

在談起Perl多進程的時候,不可避免的要說說它與Perl多線程的關系。

Perl多進程和多線程的關系

如果我們需要執(zhí)行一些各異的小任務,他們可能數量較多,但生存周期都比較短,或者他們可能共享大量數據,只有小部分的變量是自身的。這個時候,很自然就想到了多線程。

從Perl5.005開始,多線程的概念被引入Perl語言了;不過僅僅是概念而已。在Perl5.005中,線程模型默認共享所有的數據,而且數據的共享訪問需要明確的同步操作。這個模型被稱為“5005threads”,其實就是多進程,只不過換了個“多線程”的概念。

到了Perl5.6,一個新的線程模型引入了,各個線程的數據默認是私有的,而且共享數據的訪問需要顯式地調用相關的函數來保證同步。這個模型稱為“ithreads”。在Perl5.6中,ithreads模型并沒有提供一些API供用戶調用,僅作為一個內部的API供擴展使用。

到了Perl5.8,ithreads模型通過Perl的threads模塊供用戶使用,但是Perl5.8同時也保留了5005threads模型。這里,用戶可以通過配置來選擇使用哪一種模型。

對于最新的Perl5.10,5005threads模型就不再使用了,已從Perl解釋器中移除了。所以要使用真正意義的、穩(wěn)定的多線程模塊,建議使用Perl5.10解釋器。2009年3月release的SLES11的安裝包已經默認使用Perl5.10了。至此,多進程和多線程應該是區(qū)別開來了。

Perl的threads模塊提供的多線程,應用于我們經典的多線程編程例如SocketServer編程、硬件驅動或者適配層編程十分有效,然而對于非線程安全的一些函數或者模塊調用就無能為力了,會導致不可預知的錯誤或者主進程的吊死、崩潰。


文章名稱:Perl多進程概念解析
標題來源:http://m.5511xx.com/article/dhecdgp.html