Hirdetés

Új hozzászólás Aktív témák

  • Forest_roby

    őstag

    válasz Bazsesz #2360 üzenetére

    Hi!

    Szemaforok: légyeg, ha egy erőforrást egyszerre két folyamat akar használni, akkor ütköznének a folyamatok, -biztos hogy hibás eredmények születnének. Most cifrázhatnám, hogy milyen sulyos hibák történhetnének, de el tudjátok képzelni... No, első gondolatra válozókkal meglehetne oldani, a problémát ( ezt most nem részletezem ) , de az a probléma, hogy ott ugyanúgy összeakadna a progi, ez nem megoldás. A szemafórok az oprendszer (LINUX) által biztosított olyan változók, amiknél nem fordulhat elő az, hogy egszerre használják ugyanazt az eszközt... ( hogy ezt hogy érik el, az legyen egy okosabb embernek az összefoglalója ).
    Szóval ilyen problémák megoldására a szemaforokat kell használni....
    Használat:
    A szemaforokon két műveletet értelmezünk:
    Csökkentés és Növelés
    A szemafor értéka 0 és 1 lehet. Ha 0 -akkor blokkolt a folyamat és ha 1 akkor szabad a futás.
    Csökkentés:
    Amikor a progi belépni akar a kritikus szakaszba akkor fog csökkenteni, ha a szemafor 0 volt akkor várólistára kerűl a folyamat, ha 1 volt akkor a folyamat lefut és a szemafor 1-ről 0-ra csökken.
    Növelés:
    A folyamat végrehajtása után történik meg. A szemafort 1-re álitja. Ha lenne olyan folyamat, amely e miatt a szemafor miatt volt blokkolt állapotban, arról a Linux gondoskodik, hogy az felszabaduljon a blokkolt állapotból.

    (dióhélyban /majd vissza kell olvasnom, hogy mennyi baromságot írtam ide le....)

    int semget(...)
    int semctl(...)
    int semop(...)
    fv-eknek érdemes utánna nézni, sajna a progi amit tudnék adni 125 soros és most nincs kedvem begépelni, de google-on biztos sokat találsz....
    remélem azért nem volt teljesen hasztalan ezt begépelnem...

    Sok sikert!

    [Szerkesztve]

Új hozzászólás Aktív témák