中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Perl線程的示例分析

發布時間:2021-12-06 10:30:00 來源:億速云 閱讀:131 作者:小新 欄目:開發技術

小編給大家分享一下Perl線程的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

1:創建Perl線程

usethreads;my$thr=threads->new(\&sub1);subsub1{print"Inthethreads";}

也可以通過creat創建Perl線程并為Perl線程傳遞參數
new=create

my$thr=threads->create(\sub1,@paramlist);

2:等待Perl線程結束

usethreads;my($thr)=threads->new(\sub1);my@return=$thr->join();subsub1{return('FiFty',1,2);}

注意在這個例子中,sub1返回的是一個list,所以我們需要在定義Perl線程時候使用my($thr),這是給$thr一個list的上下文

3:忽略一個Perl線程

join做三件事:等待Perl線程推出,清理Perl線程以及返回Perl線程返回值。
如果你對Perl線程沒啥興趣,可以使用detach不管它,Perl會自動收拾這個進程

usethreadsmy$thr=threads->create(\&sub1);$thr->detach();sleep(15);subsub1{my$a=0;while(1){$a++;print"\$ais$a\n";sleep1;}}

sleep在這里的作用是使主進程多運行一些時間,否則主程序推出則Perl線程也會退出

我們也可以在sub里面退出Perl線程

subsub1{threads->detach();}

4:數據共享

usethreads;usethreads::shared;my$foo:shared=1;my$bar=1;my$thr=threads->create(sub{$foo++;$bar++}->join();print$foo,"\n";#2print$bar,"\n";#1

使用hash作為共享數據要注意的是

my$foo:shared;my$bar;my%foo;$foo->{bar}=\$bar#錯誤,必須使用共享數據的引用

5:使用數據共享帶來的問題

考慮這樣一個程序

usethreads;usethreads::shared;my$a:shared=1;my$thr1=threads->create(\&sub1);my$thr2=threads->create(\&sub2);$thr1->join;$thr2->join;print("$a\n");subsub1{my$foo=$a;$a=$foo+1;}subsub2{my$bar=$a;$a=$bar+1;}

這時候a的值是多少呢?sub1和sub2都對變亮a進行了修改,所以a的值是不確定的,可能是2也可能是3(我試了n次都是3)

6:同步和控制

訪問控制:lock()

看完了這篇文章,相信你對“Perl線程的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯留县| 禄丰县| 南汇区| 嘉义市| 榆社县| 巴彦淖尔市| 宝丰县| 赤城县| 酒泉市| 汝城县| 蛟河市| 广东省| 彩票| 德江县| 武城县| 蒲城县| 丰城市| 平罗县| 铁岭县| 临清市| 古丈县| 阳朔县| 枣阳市| 屏山县| 平顶山市| 独山县| 若尔盖县| 西畴县| 武胜县| 辉县市| 乌兰察布市| 古交市| 临高县| 普宁市| 敦化市| 宜兰市| 深圳市| 锦州市| 横山县| 库伦旗| 玉林市|