Mi megvan, mit sem
ér. Mi nincs, arra szegezd
a tekinteted.
Ahhoz hogy, e néhány sor mély mondanivalóját teljes mértékben felfejtsük feltétlenül szükséges megismerni az isteni szikra kipattanásának körülményeit. Naplófeljegyzésekből és egyéb önéletrajzi irásokból tudjuk, hogy a költő, aki amúgy is nagyon nehezen viselte a munkahelyén töltött péntek estéket, a vers születésének előestéjén különös természeti jelenségre lett figyelmes. Felületes szemlélőnek talán fel sem tűnt volna, hogy a teljesen működőképsenek tűnő szoftver egy ideje semmi kimenetet nem generál. Ez a jelenség azonban messze túlmutatott önmagán és a világ fájdalmára érzékeny megfigyelőt északi sarkcsillagként vezette a metafizika legsötétebb bugyraiba.
A balsors lavináját az inditotta el, hogy homokszem került a gépezetbe és leállt a szoftver inputjaként szolgáló 4 filestream közül az egyik. Szoftverünk pedig epekedéstűl és sóvárgástúl elvakultan az üres streamre függesztette mélabús tekintetét, mit sem törődve a kihivóan domborodó, gyönyörűséggel kecsegtető többi filera. Ezt próbálta hát a szerző klasszikus formába önteni, a szoftver megszemélyesitésével.
Következtetés:
Ha több erőforrást kezelsz egyszerre (socket, input file, megosztott memória vagy bármi más), ne tegyél semmiképpen blokkoló függvényhívást olyan helyre, ahol az esetleges várakozás az egyéb szálak és erőforrások elérését megakadályozza. Tehát
- ne kerüljön közösen használt nem reentráns függvényrészbe a lockok közé olyan függvény ami várakozhat, mert az az összes többi szálat megakaszthatja
- ha több socketet vagy file-t olvasol szimultán soha ne várakozz ha az egyik közülük üres, mert ezzel megakadályozod a többinek az olvasását
- ha egy mód van rá akkor ne használj végtelen ideig blokkoló függvényeket inkább adj meg nekik timeoutot, mert nem csak fenti jelenséget lehet így előállítani, hanem a szoftver vezérlését is elveszítheted