到了 Perl5.6 ,一個新的線程模型引入了,各個線程的數據默認是私有的,而且共享數據的訪問需要顯式地調用相關的函數來保證同步。這個模型稱為“ithreads”。在 Perl 5.6 中, ithreads 模型并沒有提供一些 API 供用戶調用,僅作為一個內部的 API 供擴展使用。
到了 Perl 5.8,ithreads 模型通過 Perl 的 threads 模塊供用戶使用,但是 Perl 5.8 同時也保留了 5005threads 模型。這里,用戶可以通過配置來選擇使用哪一種模型。
對于最新的 Perl 5.10, 5005threads 模型就不再使用了,已從 Perl 解釋器中移除了。所以要使用真正意義的、穩定的多線程模塊,建議使用 Perl 5.10 解釋器。2009 年 3 月 release 的 SLES11 的安裝包已經默認使用 Perl 5.10 了。至此,多進程和多線程應該是區別開來了。
Perl 的 threads 模塊提供的多線程,應用于我們經典的多線程編程例如 Socket Server 編程、硬件驅動或者適配層編程十分有效,然而對于非線程安全的一些函數或者模塊調用就無能為力了,會導致不可預知的錯誤或者主進程的吊死、崩潰。
自動化測試場景介紹
很多大型 IT 公司都以版本控制來發布一系列的企業級系統產品,為此,周期性地更新產品的每個新版本和已有產品版本間的兼容性和互操作性測試結果,對客戶而言,尤為重要。而這類測試由于重復性強,工作量大,所以經常采用自動化。下面舉一個自動化測試中的常見場景例子。
假設有一個團隊從事企業級產品系統之間的兼容性和互操作性測試,需要在以 1 個月為周期的時間內完成一組配置的兼容性測試,團隊成員很少,但是負責的設備卻很多,往往每個人需要負責數十臺甚至數百臺機器,那么就必須采用多任務并發處理的自動化測試。該團隊測試存儲網絡中的服務器,交換機和存儲之間的互操作性。服務器包括很多個硬件平臺,操作系統包括 Linux,Unix,Windows 和 VMware 等,光纖交換機、主機總線適配器卡和存儲產品都涵蓋多個廠商品牌。這個團隊就需要建立一個端到端的自動化測試流程來支撐其測試任務。
下面是一個典型測試環境的簡化圖示。
圖 1. 測試硬件環境概覽圖

其中,服務器有不同 CPU 架構的眾多品牌;它們上面運行的測試操作系統有 Linux、Windows、VMware 和各類虛擬機。物理層的光纖交換機(FC Physical Layer Switch)是測試工具儀器,用于控制光纖的鏈路通斷等異常測試。
下面是自動化測試環境框圖。
文章來源于領測軟件測試網 http://www.kjueaiud.com/