2022年1月15日星期六

人生死鎖

相信讀者都曾遇過使用電腦的時候,電腦好像「傻」了,按鍵沒反應,雖然滑鼠能動,卻點擊什麼都沒有反應,最後可能只得重新啟動電腦,但啟動後又好像沒有什麼補救方法,惟有希望同樣的事情不會發生。

當電腦沒反應時,通常有兩個可能原因,第一個原因是電腦正讀寫大量數據到硬盤上,尤其是因為電腦同時間運作了大量軟件,而又需要在不同軟件之間切換,所以作業系統便得不斷將不同軟件所佔的記憶體寫入硬盤或由硬盤讀出。當這現象發生時,電腦的硬盤指示燈會不停閃動。

另一個原因,便是因為某一運行中的軟件正在等候另一電腦內的事件發生,例如另一個軟件使用完某硬件,或完成其工作,但是又等不著,又不知要等多久,所以電腦既沒反應,硬盤指示燈亦不會閃動。但是為什麼這軟件等不到那件事件發生呢?可能那事件亦在等另一電腦的事件發生,一個軟件等另一個軟件的完成,如此類推,可能最後一個軟件所等的事件,便是為首的第一個軟件完成工作。換句話說,電腦內的某些軟件互相等待另一軟件完成或其運算結果,最後是當中所有軟件都是在等另一個軟件,結果是沒有任何一個軟件可以開始運作,所有軟件都停下來了。在計算機科學裡,這現象稱為Deadlock(死鎖)。

試想我們人生之中,是否在某個時空,也是處於一個「死鎖」的情況下?例如有人會這樣說:「我想如果我買不到樓,我便不能結婚;同時,如果只是我一個人的力量,我也買不到樓,所以我相信我要和我另一半一同工作,才有能力儲到首期和有能力支持供款。」細心去想想這句說話,結婚的先決條件是買樓,但是買樓的先決條件卻是結婚,那麼這個人會怎樣,而結果又會是怎樣呢?你可以想像得到,這個人既買不到樓,又結不到婚,什麼都不做,但卻每天都跟自己說他不是不做,只是等「情況許可」下才開始做。

那麼當我們遇上「死鎖」的情況時,我們可以怎樣做呢?作業系統的知識教導我們,解決「死鎖」的方法有兩個,「避免」和「打破」。「避免」的方法是,如果當電腦某一個運行中的軟件需要等待另一件軟件完成或運作結果,電腦會先檢查如果讓這軟件去等待,會否形成「死鎖」,如果不會,電腦會讓這軟件去等,否則,電腦便會禁示這軟件去等,很大機會這軟件便會顯示錯誤訊息,告訴使用者,這樣做雖然會令某些軟件不能正常運作,但這至少不會令電腦「死鎖」。另一個方法是電腦經常性檢查是否有部份軟件已形成「死鎖」,如果有,便會終止其中一個軟件,這樣其他軟件便可以順序啟動運作而最終完成,這至少令大部份軟件可以運作。

將以上解決方法應用到人生之上,也可以避免人生出現「死鎖」的。例如當一個人在計劃去做一件事前,如果是有先決條件,便看看那先決條件是否另有先決條件,如此類推,到最後會否反而在等現在要去開始做的一件事,如果是,眼前這件事是不應開始的,自己的想法也有問題,要看看每件事的先決條件是否必要的,找出一件事的先決條件是不合理和不需的,便開始去做。例如以之前所提的「買樓、結婚」來說明,當想到「要另一半一同合作才能買到樓」時,便要去想,其實這兩件事的先決條件是否必然的,「買樓才結婚」和「結婚才買樓」。如果跟情人談過,其實不買樓也可以結婚吧,那麼便先結婚,之後才合力開始儲錢買樓,又或原來自己一個人也可以買一個較小的單位,那麼便努力先買一個小單位,才去想結婚的事。

至於「打破」的方法,是當你覺得人生有很多事情想做,但是卻苦無頭緒如何開始,想想是否已經出現「死鎖」的情況,如果是,想想那一件事的先決條件是不合理,或至少可以放棄的。又以以上「買樓、結婚」的例子,當想到自己正處這兩難時,這兩件事都有先決條件,便要去想那一件的先決條件可以改變或放棄的。

人生走入「死鎖」的情況,可能便是我們常說的「走入了死胡同」或「鑽牛角尖」,是很浪費心力和時間的。如果你覺得你正處於「死鎖」,想想如何去解決吧,否則,你永遠都是原地踏步。

沒有留言:

發佈留言

千言萬語

 電腦這個詞語,給我們的感覺是一件像我們人類腦袋的東西,擁有記憶,懂得思考,但是在英文原字Computer,其實只指是一部懂得運算的設備而已,能令一部只懂得運算的設備變成一部像我們人類般思考,懂得完成無數的工作,是隨著電腦發展而被研發出來的程式語言。到了今天,已經有數以千計的程式...