我是一個線程(下)

接前兩篇文章:我是一個線程(上) (中)html

其實此次遇險我應該可以預想到纔對, 太大意了。
前幾天我處理過一些從http 發來的存款和取款的包裹, 老線程0x6900 特地囑咐我:
"處理這些包裹的時候要特別當心, 你得必定要先得到一把鎖, 在對帳戶存款或者取款的時候必定要把帳戶給鎖住, 要否則別的線程就會在你等待的時候趁虛而入,搞破壞, 我年輕那會兒很毛糙,就捅了簍子"
爲了「恐嚇」我, 好心的0x6900還給了我兩個表格:
(1)沒有加鎖的狀況
圖片描述
(2)加鎖的狀況
圖片描述
我看的膽顫心驚, 原來不加鎖會帶來這麼嚴重的事故。
今後之後看到存款,取款的包裹就倍加當心, 還好,沒有出過事故。 算法

今天我收到的一個包裹是轉帳, 從某著名演員的帳號給某著名導演賺錢, 具體是誰我就不透漏了, 數額可真是不小
我按照老線程的吩咐, 確定要加鎖啊, 先對著名演員帳號加鎖, 在對著名導演帳號加鎖。
可我萬萬沒想到的是, 還有一個線程,對,就是0x7954, 居然同時在從這個導演到往這個演員轉帳。
因而乎,就出現了這麼個狀況:
圖片描述
剛開始我還不知道什麼狀況, 一直坐在等待車間傻等, 但是等的時間太長了, 長達幾十秒 ! 我可歷來沒有經歷過這樣的事件。 segmentfault

這時候我就看到了線程0x7954 , 他清閒的坐在那裏喝咖啡, 我和他聊了起來:
「哥們, 我看你已經喝了8杯咖啡了, 怎麼還不去幹活?」
「你不喝了9杯茶了嗎?」 0x7954 回敬到。
「我在等一個鎖, 不知道哪一個孫子一直不釋放」
「我也在等鎖啊,我要是知道哪一個孫子不釋放鎖我非揍死他不可 」 0x7954 絕不示弱。 微信

我偷偷的看了一眼, 這傢伙懷裏不就抱着我正在等的 某導演的鎖嘛?
很明顯, 0x7954 也發現了我正抱着他正在等待的鎖。 spa

很快咱們兩個就吵了起來, 各執己見:
"把你的鎖先給我, 讓我先作完"
"不行, 歷來都是作完工做才釋放鎖, 如今絕對不能給你"
從爭吵到打起來, 就那麼幾秒鐘的事兒。
更重要的是, 咱們倆不只僅持有這個著名導演和演員的鎖, 還有不少其餘的鎖, 致使等待的線程愈來愈多, 圍觀的人們把屋子都擠滿了。操作系統

最後事情真的鬧大了, 我歷來沒見過終極大boss "操做系統" 也來了。
大Boss畢竟是見多識廣, 他看了一眼, 哼了一聲 , 很不屑的說:
"又出現死鎖了"
"大家倆要Kill掉一個, 來吧, 過來抽籤 "線程

這一會兒把我給嚇尿了, 這麼嚴重啊!
我戰戰兢兢的抽了籤,打開一看, 是個"活"字。
唉,小命終於保住了。 htm

可憐的0x7954 被迫交出了全部的資源之後, 很不幸的被kill掉, 消失了。
我拿到了導演的鎖, 能夠開始幹活了。
大Boss操做系統如一陣風似的消失了, 身後只傳來他的聲音:
記住, 咱們這裏導演>演員, 不管認識狀況都要先得到導演的鎖
因爲不只僅是隻有導演和演員, 還有不少其餘人, Boss留下了一個表格, 裏邊是個算法, 用來計算資源的大小, 計算出來之後,永遠按照從大到小的方式來得到鎖:
圖片描述
圖片描述事件

我回到線程池, 你們都知道了個人歷險, 圍着我問個不停。
凶神惡煞的線程調度員把大Boss的算法貼到了牆上。
天天早上, 咱們都得像無節操的房屋中介, 美容美髮店的服務員同樣, 站在門口,像被耍猴同樣大聲背誦:
「多個資源加鎖要牢記, 必定要按Boss的算法比大小, 而後從最大的開始加鎖」圖片


又過了不少天, 我和其餘線程們發現了一個奇怪的事情:包裹的處理愈來愈簡單
無論任何包裹,不論是登陸, 瀏覽,存錢..... 處理的步驟都是同樣的, 返回一個固定的html頁面
有一次我偷偷的看了一眼, 上面寫着:
"本系統將於今晚 00:00 至4:00 進行維護升級, 給你帶來的不便咱們深感抱歉"
我去告訴了老線程0x6904, 他嘆了一口氣說:
"唉, 咱們的生命也到頭了, 看來立刻就要重啓系統, 咱們就要消失了, 再見吧兄弟。"

系統重啓的那一刻終於到來了。 
我看到屋子裏的東西一個個的不見了, 等待車間,就緒車間,甚至CPU車間都慢慢的消失了。
我身邊的線程兄弟也愈來愈少, 最後只剩我本身了。
我在空曠的原野上大喊: 還有人嗎?
無人應答。
咱們這一代線程池完成了使命。
下一代線程池將很快重生。
(完)
歡迎交流:
QQ: 14703250
微信公共號: 碼農翻身
圖片描述

相關文章
相關標籤/搜索