Ipari zen

Szak-irodalom. A fejlesztő jajszava haikuban. A technika ördöge avagy a lelketlen vasban a mélyen emberi.

A szoftverfejlesztés művészete és a zen


2010.01.22. 12:58 Ipari zen

A pesszimista szoftver

Címkék: select pesszimista timeout dead lock

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

 

Szólj hozzá!

süti beállítások módosítása