Hirdetés

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

  • Jester01

    veterán

    válasz Bazsesz #2360 üzenetére

    A szemaforok tulajdonképpen számlálók amik általában azt jelentik, hogy valami X dologból rendelkezésre áll valamennyi. A számláló növelése nem várakozik, ez csak azt jelenti, hogy több X áll rendelkezésre. Ha most jön valaki, hogy neki kellene valamennyi X, akkor a rendelkezésre álló mennyiséget az igényelt mennyiséggel csökkenteni kell, illetve ha éppen nincs elegendő, akkor várni kell.

    A te feladatodra rátérve: 2 szemaforra lesz szükség, mivel a probléma szimmetrikus. Az egyik jelzi, hogy az A program írt valamit amit a B kiolvashat, illetve fordítva.

    A program:
    write(); /* írunk valamit */
    sem_up(A); /* jelezzük, hogy A írt */
    sem_down(B); /* várunk amíg B jelzi, hogy írt */
    read(); /* kiolvassuk */

    B program:
    sem_down(A); /* várunk amíg A jelzi, hogy írt */
    read(); /* kiolvassuk */
    write(); /* írunk valamit A-nak */
    sem_up(B); /* jelezzük, hogy B írt */

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