游戏大厅 从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1
上一篇我們大致的了解了幾種聊天室的行為模式
最簡單明了的推模式 幾乎不需要任何多余的語言來描述它的實現(xiàn)
這一篇我們看看如何實現(xiàn)拉模式更有效。
??
??
??
???
???
本圖清晰的表現(xiàn)了"拉"模式聊天室的行為。
- 并發(fā)多用戶向數(shù)據(jù)池寫數(shù)據(jù)
- 并發(fā)多用戶從數(shù)據(jù)池讀書據(jù)
- 數(shù)據(jù)最好以時間為順序儲存在集合中
- 某時間向后的枚舉查找將是最大的消耗。
??
??
聊天室進化 -女仆編年史
神秘的原始社會
仍然參考我們神奇樸素的Asp3聊天室
53???? Application.lock
54???????? Application("show5")=Application("show4") '一條新信息駕到 第五條信息被淘汰
55???????? Application("show4")=Application("show3")
56???????? Application("show3")=Application("show2")
57???????? Application("show2")=Application("show")
58???????? Application("show")=NewMessage???? '其他所有的信息向前移動一次給新的信息讓個位置。
59???? Application.UnLock
60???? Response.Write Application("show5")
61???? Response.Write Application("show4") '由于是postback 模式 必須輸出歷史n行數(shù)據(jù)
62???? Response.Write Application("show3")
63???? Response.Write Application("show2")
64???? Response.Write Application("show")
從線程安全角度來說 本來 response.write應(yīng)該也在 application .lock 塊中? 或者分開兩個lock塊.? 但是這里由于response.write 在非cache模式下可能帶來的時間延遲 作者煞費苦心的把他們從安全鎖中移動出來.在實際運行中 很可能出現(xiàn)丟話或者重復(fù)發(fā)言的狀況
application究竟 被人做了些什么? 沒有邊界? 沒有抽象包裝的這個實現(xiàn)就好像原始共產(chǎn)主義 誰是誰的誰啊這都是!
??
?
私有制出現(xiàn),奴隸社會 LOCK~ 這個女奴是我的~
翻譯成c# 我們可以看到一個比較容易理解的邏輯 當然這個代碼稍微有所修改 兩個鎖很明確 很完美的把數(shù)據(jù)和線程排起了隊伍
??
Code Snippet
??
在aspx可能這樣調(diào)用
Code Snippet
?
看起來圓滿完成任務(wù) 但是里面充滿了曖昧????
?
類似事務(wù) 或者訪問非托管資源 在訪問線程臨界資源的時候有個原則
你盡可能的晚鎖 盡可能的早釋放,
看看剛剛做了些什么
Oh My God
我們可憐的Channel阿? 他被全程鎖定。好像一個被老爺少爺輪流調(diào)教的女奴啊,真讓我等正人君子心潮澎湃~~? 啊不對? 是于心不忍。
由于每個調(diào)教者在調(diào)教前聲明:這個女奴是“我雷瓦Mono”我的東西! 所以在調(diào)教者聲明 這個女仆“亞沒漏”不要了之前 誰也不許碰!
LOCK LOCK~
這才是兩個主人并發(fā)訪問? 就已經(jīng)造成了這么多等待,如果是100主人個并發(fā)調(diào)教,那得是多么壯觀的隊伍!
我們的服務(wù)程序如果按照這個效率編寫 恐怕cpu占用25%的時候就會崩潰---線程隊列的極限是多少?? 按照Jeffery Richard 的話說 你提出這個問題的時候 就已經(jīng)Very Very Wrong鳥。
換句話說,不要挑戰(zhàn)爺們的耐性,后果很嚴重
?
?
社會要進步 人民要革命? 封建時代來臨
我們不能滿足這樣的性能。
老爺調(diào)教女奴的時候少爺不觀摩 這我們理解,(寫的時候加lock防止別的線程讀)
少爺和女仆喝茶的時候? 老爺不能亂入開始餐廳調(diào)教,這我們也接受 (讀的時候加lock防止別的線程寫)
?
但是少爺們找女奴喝茶,沒有道理不可以一起開茶話會吧!
從某種意義上,只要集合元素不變化的話, Queue對象是支持安全的并發(fā)讀的,為什么幾個線程都在讀取的狀況下,我們還要繼續(xù)上鎖彼此排斥對方呢? 我們只是純粹對女仆有愛,沒什么不可以光明正大的吧!
把鎖從完全鎖變成讀寫鎖,能夠有效的減少很多不需要的等待。——? 我們可以把喝茶的隊伍縮短!
?
Code Snippet這是女仆界的勝利 她不再是一個人(的人) 而是可以和人socal的普通人了? 雖然還在封建家長制的陰影下,仍然是被剝削被蹂躪的底層民眾,但是她已經(jīng)具有了比以前更大的自由!
?
先寫到這里看看和諧底限 敬請期待?? 女仆編年史2
轉(zhuǎn)載于:https://www.cnblogs.com/waynebaby/archive/2009/08/21/1551761.html
總結(jié)
以上是生活随笔為你收集整理的游戏大厅 从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel 2007 Open XML文
- 下一篇: Pyechart:30分钟学会pyech