陪了潘辰4個小時,他終於悠悠醒轉,在我的辦公室裏,一邊揉著腦袋向我抱怨下手太重,一邊喝著速溶咖啡,等待我的解釋。

我端著咖啡罐和熱水壺走到桌前坐下,時隔多年後,又一次開始了對學弟潘辰的教導。

“你看,我現在想要衝一杯咖啡,需要咖啡罐和水壺。如果我先拿到咖啡,”我伸手拿起咖啡,往杯子裏放了兩勺,“又拿到水壺,”我又將熱水倒入杯中,“一杯咖啡就衝好了,任務完成了,對吧?”

潘辰點點頭,不明所以地看著我。

我接著說道;“如果你也想衝一杯咖啡,你開始的比我晚,當我放下咖啡罐,你把它拿起來,我放下水壺,又被你拿到了,這樣,我有了一杯咖啡,你也可以衝一杯咖啡,我們就完成了兩項任務。”

這裏的邏輯很簡單,潘辰點頭認可。

“那麽問題來了,”我繼續說,“如果我倆同時想衝一杯咖啡,我拿到了咖啡罐,”我拿起咖啡罐,又把水壺推到他麵前,“而你拿到了水壺,我們都想盡快完成自己的任務,不願放棄自己手頭的資源,又都拿不到別人的資源,會怎麽樣?”

潘辰答道:“我倆會互相等待對方放手,但誰也不會放下自己的資源,所以,我們會無盡地等待下去。”

我讚許地點點頭,道:“我的課講完了,這就是死鎖。”

潘辰的超級大腦立即搞明白了事情的來龍去脈,他分析道:“當幾個工作需要同樣的一樣或幾樣資源,它們又各自占有一樣資源不願放棄,就形成了死鎖。我工作時同時需要幾樣資源,左手握鼠標,右手敲鍵盤,眼睛看屏幕,大腦分析運算。當時,我用鼠標點擊第一個頁麵,右手在第二個窗口打字,眼睛看著第三個窗口,大腦又在想著工作總結,四項工作各占一樣資源互不相讓,最終進入了死鎖狀態。”

“不錯,”我補充道,“我已經跟陳教授確認過,事實上,你的大腦工作在運用並發的方式,而不是你以為的並行方式。並行方式,是指兩個任務可以同時處理,完全獨立地運行,需要兩個以上的處理核心各自為政。而並發方式則是把任務分成幾份,在它們之間快速切換。事實上,同一時刻,你的大腦還是在處理一項工作,隻是切換得太快,宏觀上,它們就在同時進行了。以前你同時進行兩項工作,或許大腦還可勝任,但當任務多達四個,一段時間之後,你的大腦不堪重負,一個疏忽,在切換時出現了錯誤,把資源分散給了不同的任務,於是造成了死鎖。”

潘辰這下徹底明白了,他想了想,又問道:“學長,你看,有什麽解決辦法呢?”

“我剛才也在想這個問題,解決死鎖最簡單的方法就是增加資源,如果你有兩個大腦四隻手,一切就都解決了,但這顯然是不可能的。另一個方法僅僅是我的設想,你可以試試。今後,你每次開始工作前,都要先在大腦裏排出工作的優先順序,每當任務之間切換時,都要先想一下,是否有可能發生衝突,如果有可能,你就要按照這個順序,把排在前麵的工作優先完成,而不是讓它們平等地競爭。這樣,優先的任務可以先占有全部資源,死鎖也就可以避免了。你可以先訓練一下,剛開始也許會很慢,但時間一久,等你適應過來,效率就會恢複了。”

潘辰立刻領會了我的用意,點頭道:“好的,就這麽辦。”

我提醒道:“別忘了,呼吸、心跳等工作是最優先的,首先,你要保證自己活著。”