MUP1+-+Øvelse+4.2

Vi skal først have lavet shared data, mutex og conditionals:

Nedenfor ses Bil til Entry del. Da bil til exit er stortset det samme viser vi kun den ene. Bil tråd: Det der sker er: - Først tages mutex og variablen car_wait_entry sættes til true. Mutex tages først, da der skal in og ændres i fælles data. - Der broadcastes nu entry conditional - fortæller at vi har noget der venter ved indgangen. - Vi ender nu i en "vente" position, som vi kommer ud af, når vi får besked om, at porten er åben og vi kan køre ind. - Entry åbnes og der holder derfor ikke en bil og venter længere (car_wait_entry = false). - Vi broadcaster entry for at signaler vi er kommet ind og slipper mutex. (Da der kun er en tråd der ændre i cars gør det ikke så meget at vi slipper mutex først, men vi burde nok først slippe mutex efter ++cars)

Entry tråd: Det der sker er: - Først tages mutex. - Vi ender nu i en "vente" position, som vi kommer ud af, når vi får besked om, at der holder en bil og venter. - Entry åbnes og der holder derfor ikke en bil og venter længere (car_wait_entry = false). - Vi ændre variablen "open_entry" til true og broadcaster entry for at signaler bilen kan komme ind. - Vi venter nu igen på at bilen er kommet ind - og slipper mutex. Når bilen giver besked om, at den er kommet ind, lukker vi porten og slipper mutexen.

Vi oplevede problemer med doorThreads, indtil vi indsatte while(1) omkring - så virkede det.

Vores program er lavet, så vi først fylder parkinglot og derefter tømmer den - og det virker lige præcis som det skal :)