Problém obědvajících filozofů: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎Chandel / Misra Řešení: hůlka za vidličky
Lukina (diskuse | příspěvky)
Řádek 26:
 
=== Řešení s hierarchií zdrojů ===
Další jednoduché řešení dostaneme vyhrazením částečného pořadí, nebo hierarchie pro zdroje (v tomto případě vidličkyhůlky), a zřízením konvence, že všechny zdroje budou dosahované v určitém pořadí a v opačném pořadí uvolněné. V našem případě budou zdroje (vidličkyhůlky) očíslované od 1 po 5 v nějakém pořadí a každý filozof si vždy vezme nejdříve vidličkuhůlku s menším číslem a až potom vidličkuhůlku s větším číslem. Pak vždy položí nejdříve vidličkuhůlku s vyšším číslem, následně vidličkouhůlku s menším číslem. Pokud tedy 5 filozofů simultánní zvedne vidličkuhůlku s menším číslem, tak zůstane na stole vidličkahůlka s největším číslem, takže 5. Filozoffilozof bude bez vidličkyhůlky. Navíc pouze jeden z filozofů bude mít přístup k oběma vidličkyhůlkám. Když dojedojí, postpustí obě vidličkyhůlky, přičemž tu vidličkuhůlku s nižším číslem pustí dříve, což umožní, aby se najedenajedl filozof sedící vedle něj.
 
Toto řešení i navzdory vyhýbání se deadlock-om není příliš praktické, speciálně v případě, pokud neznáme předem používanou množinu zdrojů. Například, pokud program drží zdroje 3,5 a potřebuje ještě zdroj 2, musí vypustit zdroj 5, pak 3, aby mohl požádat o 2 a opět požádat o zdroje 3 a 5 v tomto pořadí. Právě proto je tento způsob velmi neefektivní.
 
=== Chandel / Misra Řešení ===