Øvelse+03.2+-+Creating+Posix+threads

Opgave 1
Programmet med 2 seperate tråde blev lavet i eclipse:

kode som pdf: (med kommentarer!)

til at lave trådene bruge pthread_create. Denne tager 4 argumenter. Det første er tråden der skal laves, Det 3. er den funktion tråden skal køre. Argumenter der ikke skal bruges sættes til NULL.

Desuden tilføjes pthreads under libraries for at linkeren kan finde funktionerne.

Funktionen pthread_join sikre at programmet ikke terminerer før trådene er kørt færdig. Hvis programmet terminerede vil trådene også terminere, da det virtuelle memory, som er reserveret til processen bliver nedlagt.

Opgave 2
Der tages udgangspunkt i koden fra opgave 1, hvor trådenes funktioner ændres til respektivt at inkrementere samt udskrive.

Da projektet køres 10 gange, observeres det at trådene starter forskelligt. Nogle gange udskrives shared før det inkrementers, og nogle gange inkrementeres det før det udskrives.

Det er også et af problemerne med programmet. Der er ingen styr over hvornår de forskellige processer køres.

Opgave 3 + 4
Den eneste ændring fra øvelse 3 til øvelse 4 var, at vi har sat et brugerdefineret antal sekunder hvor systemet skal sove.

Der skabes et vektor objekt hvor der fyldes 10000 elementer af det samme tal i. Der skabes et brugerdefineret antal "writer" threads som tilgår det samme objekt og fylder hvert sit tal ind. Der observeres at dette næsten ( en gang i mellem skrives der i en tilfældig rækkefølge) virker hver gang. Hvis der derimod ændres i vektor header filen så der skal indsættes 1000000 elementer af det samme tal på samme tid kan systemet ikke følge med længere og tilgår objektet fuldstændigt tilfældigt. Det er også ligegyldigt hvilket antal sekunder man venter da de stadig tilgår det samme objekt samtidig.

Nedenfor kan den fulde kode ses: