第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這種并發(fā)鎖的原理是啥

這種并發(fā)鎖的原理是啥

紅糖糍粑 2019-04-16 17:05:21
自己見過的鎖都是類似先定義一個變量=true,相關操作完成之后再把相關的值變成false.$lock_num=0;while(!redis_helper::lock("lottery")){if($lock_num>=300){return"親,好多人在排隊搶紅包啊,請重新進入頁面";}//0.1susleep(100000);$lock_num++;}下面是并發(fā)鎖定的相關函數(shù),自己能明白這個鎖每6s會變換一次真假值,但是不明白結(jié)合上面的$lock_num針對的并發(fā)情況到底是啥?沒6s變換真假值,6s/0.1s=60次,怎么會達到300,頁面卡住了,其他人恰好重新將鎖設置為假?/***并發(fā)鎖定*@paramstring$name鎖名稱*@paramint$expires超時失效的時間,單位秒*@returnbooltrue:獲取鎖成功,false:獲取鎖失敗*/publicstaticfunctionlock($name,$expires=5){self::init_redis();$key=$name.'_lock';$now=time();$val=$now+$expires+1;if(self::$redis->setnx($key,$val)){returntrue;}else{$old_val=self::$redis->get($key);//失效的情況if($now>$old_val&&$now>self::$redis->getSet($key,$val)){returntrue;}}returnfalse;}
查看完整描述

2 回答

?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

我的理解是嘗試300次獲取鎖,如果失敗了,就告訴用戶失敗。
成功獲取鎖的話,有6秒的獨占時間。這個時間用來給程序處理后續(xù)的業(yè)務邏輯,比如生成訂單。6秒過后,下一個用戶進來,繼續(xù)獲取鎖。
lock->dosth.->release
lock->dosth.->release
lock->dosth.->release
lock->dosth.->release
                            
查看完整回答
反對 回復 2019-04-16
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

$lock_num跟鎖沒有關系,$lock_num只是用來記錄重試的次數(shù),比如當前同時有1000個用戶在搶這個鎖,而你如果重試了300次(30秒)還沒有搶到鎖就待會再來吧。
循環(huán)會每隔0.1秒重試一次,但是因為一個鎖會占用6秒的時間,所以實際上在300次循環(huán)中(30秒)其實只有5次競爭鎖的機會。
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 397 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號