A patthelyzet és az éhezés közötti fő különbség az oka-okozati összefüggés közöttük; a patthelyzet okoz éhezést. Egy másik érdekes különbség a patthelyzet és az éhezés között az, hogy a patthelyzet probléma, míg az éhezés az esetenként segíthet abban, hogy kiszabaduljon a patthelyzetből. A számítógépes világban, amikor egy számítógépes programot írunk, egynél több folyamat / szál lesz, amely egyidejűleg fut egymás után, hogy teljesítse a programhoz szükséges szolgáltatást. Ezért ahhoz, hogy tisztességes rendszer legyen, a programozónak gondoskodnia kell arról, hogy minden folyamat / szálat megkapjon vagy elegendő hozzáférést kapjon a szükséges erőforrásokhoz. Ha nem, akkor egy holtpont lép fel, és később éhen jár. Általában a tisztességes rendszer nem tartalmaz holtpontokat vagy éhezéseket. A holtpontok és az éhezés elsősorban akkor fordul elő, amikor sok szálak versenyeznek korlátozott erőforrásokért.
A patthelyzet van egy olyan állapot, amely akkor fordul elő, amikor két szál vagy folyamat várja egymást a feladat elvégzéséhez. Csak leteszik, de soha nem állítják le vagy fejezik be a feladatot. A számítástechnikában a zsákutcák mindenütt láthatók. Egy tranzakciós adatbázisban, amikor a saját tranzakción belül két folyamat mindegyik frissíti ugyanazt a két információsort, de ellentétes sorrendben, holtpontot okoz. Egyidejű programozás esetén holtpont akkor fordulhat elő, amikor két versengő művelet várja egymást, hogy előrehaladjon. A telekommunikációs rendszerekben holtpontra kerülhet a jelek elvesztése vagy megsérülése.
Jelenleg a patthelyzet a multiprocesszoros rendszerek és a párhuzamos számítástechnika egyik fő problémája. Megoldásként az úgynevezett reteszelő rendszer folyamat szinkronizálás a szoftverre és a hardverre is be van építve.
Az orvostudomány szótárából az éhezés az élet fenntartásához szükséges tápanyagok súlyos vagy teljes hiányának következménye. Hasonlóan a számítástechnikában is az éhezés felmerült probléma amikor több szál vagy folyamat vár ugyanazon erőforrásra, amelyet patthelyzetnek hívnak.
Annak érdekében, hogy kiszabaduljon a patthelyzetből, az egyik folyamatnak vagy szálat le kell adni vagy vissza kell helyezni, hogy a másik szál vagy folyamat felhasználhassa az erőforrást. Ha ez folyamatosan megtörténik, és ugyanazon folyamatnak vagy szálnak minden alkalommal feladnia kell, vagy vissza kell lépnie, miközben hagyja, hogy más folyamatok vagy szálak használják az erőforrást, akkor a kiválasztott folyamat vagy szál, amely visszahúzódik, éhezésnek nevezett helyzeten megy keresztül. Ebből adódóan, az akvárium elkerülése érdekében az egyik megoldás az éhezés. Ezért néha éhezést hívnak egyfajta livelock. Ha sok magas prioritású folyamat vagy szál van, az alacsonyabb prioritású folyamat vagy szál mindig holtpontba kerül.
Sok éheztetés lehet, mint például éhezik az erőforrásokon és éhezik a CPU-n. Sok általános példa található az éhezésre. Ők az olvasók-írók problémája és az étkező filozófusok problémája, amely híres. Öt csendes filozófus ül egy kerek asztalnál, spagetti tálakkal. A villákat a szomszédos filozófusok párja között kell elhelyezni. Minden filozófusnak felváltva kell gondolkodnia és enni. A filozófus azonban csak akkor tud enni spagettet, amikor mind a bal, mind a jobb villája van.
Az „étkező filozófusok”
• Holtpontban a két szál vagy folyamat egymásra vár, és mindkettő nem halad előre.
• Éhezéskor, amikor két vagy több szál vagy folyamat vár ugyanarra az erőforrásra, az egyik visszateker, és hagyja, hogy a többiek először az erőforrást használják, majd az éhező szál vagy folyamat megpróbálja újra. Ezért minden szál vagy folyamat mindenképpen tovább halad.
• Holtpontban mind a magas prioritású szálak / folyamatok, mind az alacsony prioritású szálak / folyamatok végtelenül várnak egymásra. Sose ér véget.
• De éhezéskor az alacsony prioritással rendelkezők várnak vagy visszalépnek, de a magas prioritásúak folytatódnak.
• A patthelyzet egy kör alakú várakozás.
• Az éhezés egyfajta élőzár, és néha segíti a kilépést a patthelyzetből.
• A patthelyzet éhezést okoz, de az éhezés nem okoz holtpontot.
• Holtpontra kerül a kölcsönös kizárás, tartás és várakozás, nincs mentesség vagy körkörös várakozás.
• Az éhezés az erőforrások szűkössége, az erőforrások ellenőrizetlen kezelése és a folyamat prioritásainak következtében alakul ki.
Összefoglaló:
A holtpont és az éhezés néhány olyan probléma, amely felmerül az adatversenyek és versenyfeltételek miatt, amelyek a programozás és a hardver bevezetése során fordulnak elő. Holtpontban két szál végtelenségig vár egymásra, anélkül, hogy végrehajtana, míg éhezésben az egyik szál visszahúzódik, és hagyja, hogy a másik szál felhasználja az erőforrásokat. A patthelyzet éhezést okoz, míg az éhezés segíti a szálat, hogy kilépjen a patthelyzetből.
Képek jóvoltából: