亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
pppk之Recipe5.3(2)
[打印本頁]
作者:
zhuyubei
時間:
2012-08-22 21:05
標題:
pppk之Recipe5.3(2)
這幾天做項目有些趕。項目里原先做開發(fā)的人因為受不了太辛苦,又轉(zhuǎn)去做support了,現(xiàn)在開發(fā)就我和另一個負責人了。而負責人的任務主要就是把活壓給我。我本來是負責2個項目的platform代碼和其中一個項目的實現(xiàn)的。現(xiàn)在雖然platform和自己的項目都完成了,另一個項目又到我手里了。唉,項目高層的負責人倒是輕松,說句你負責就行了。難道就不怕我走人了后,2個項目沒人能接手嗎?催吧。繼續(xù)催。我盡力而為,無欲則剛就好了。
我們下面接著寫昨天的Hash鎖。
作者:
zhuyubei
時間:
2012-08-22 21:18
今天要講得是lock_value這個函數(shù)。它的功能是能鎖住某個Key對應的值。但是其實Perl會告訴你這個鎖不安全。
lock_value的用法是lock_value( %has, key );
lock_value( %hTestHash, "FOUR" );
eval{# We can modify the value here
$hTestHash{ FOUR } = 5;
};
print "We can't modify the value of key 'FOUR', when it is locked:[$@]" if $@;
printHash( \%hTestHash );
復制代碼
這里我們試圖把在昨天已經(jīng)加入的"FOUR" => 4 , 修改其值為5。但由于我們剛剛已經(jīng)講"FOUR"對應的值鎖住了,所以這里修改值的操作失敗了?磥礞i管用。但這時候,Perl發(fā)出了個warning:
Cannot usefully lock values in an unlocked hash at /develop/Project/Perl/pppk/Hashes/Recipe5.3/perl.pl line 95
復制代碼
怎么?還不能有效鎖住value嗎?的確。我們接下來的操作會讓顯示這句話的一些意思。
既然鎖住的是key對應的value,那我們把這個key刪掉會如何呢?鎖會阻止我刪除嗎?帶著這樣的疑問,我嘗試了下。
eval{# the lock on "FOUR" is expired.
delete $hTestHash{ FOUR };
};
print "We can delete key 'FOUR' when it is locked." if not $@;
printHash( \%hTestHash );
復制代碼
從異常和輸出來看,即使value被鎖住,但是居然是可以刪除key的。而且這里我提前注釋了下,已有的鎖過期了,失效了。
作者:
zhuyubei
時間:
2012-08-22 21:31
在刪除了鎖住的key/value后,我們重新加入剛剛的key,只是這里把值換成了5。我們想看看會發(fā)生什么樣的異常。但是居然一切平安無事!也就是說,這里的value鎖不起作用了。這印證了Perl的警告
print "Lock expired!\n";
eval{# Add 'FOUR' again
$hTestHash{ FOUR } = 5;
};
print "We can modify the value of key 'FOUR', when the lock is expired!" if not $@;
printHash( \%hTestHash );
print "=====\n";
eval{
$hTestHash{ FOUR } = 6;
};
print "We can modify the value of key 'FOUR' again, when the lock is expired!" if not $@;
printHash( \%hTestHash );
unlock_value(%hTestHash,"FOUR");
復制代碼
這里我們先insert原先key為4的記錄并再次更改其值。都沒問題。鎖已經(jīng)沒有任何作用了。最后我們通過unlock_value來釋放value鎖,釋放的時候必須要指定key的值,不然報錯.
作者:
zhuyubei
時間:
2012-08-22 21:39
最后還有個小細節(jié)。就是我們試圖鎖住hash里不存在對應key的value,比如這里沒有"TEN"。我們就鎖住它。
在我們試圖鎖住這個不存在的key的時候,Perl把這個key加進到了hash里去,其值是undef. 由于value被鎖住,在無法刪除該key的情況下,你是不能修改它的值的。這里要值得注意.
# Lock the value where the key is not in the hash.
# It inserts the key with a value undef.
lock_value(%hTestHash,"TEN");
print "Lock a non-exixted key\n";
printHash( \%hTestHash );
eval{
$hTestHash{ TEN } = "10"
};
print "We can't insert the value of key 'TEN', when it is locked:[$@]" if $@;
unlock_value(%hTestHash,"TEN");
復制代碼
作者:
zhuyubei
時間:
2012-08-22 21:43
我剛還想到,鎖的嵌套問題。比如一種鎖加上去后,又加另一種鎖。這里就不實踐了。我想lock_hash的等級是最高的。
lock_keys和lock_value由于后者在刪除key的時候會失效,所以它應該比lock_keys的有效性稍微差些吧。大家有什么經(jīng)驗,歡迎分享!
作者:
cdtits
時間:
2012-08-22 22:57
呵呵,堅持每天報道
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2