M2.F3: Synkronisering Flashcards
Hur kan man implementera concurrency?
Med processer eller trådar
Vad sparas i heap memory?
Ett objekts data
Vad sparas i stack memory?
Referens till objekt och primitiva datatyper
Vad delar trådar på?
Globala variabler, statiska objekt och objekt i heapen
Vad delar trådar inte på?
Lokala variabler.
Vad har en tråd eget av?
Program counter och egen call stack
Var körs trådar?
I en process adress space
När kan ett problem uppstå?
När två trådar försöker ändra värdet på en delad resurs samtidigt
Hur kan trådar kommunicera med varandra?
Genom delade variabler eller objekt och genom att skicka/ta emot trådar med metodkall.
Varför är det komplicerat för trådar att kommunicera med varandra?
För de körs endast inom tiden de får av CPUn och en tråd kanske inte hinner klart en operation innan CPUn byter till en annan tråd.
Hur lagras en lokal variabel av objekttyp?
Referensen sparas i stacken och objektdatan sparas i heapen.
Varför är en metod trådsäker om den endast skapar nya objekt (istället för att använda befintliga)?
För att varje tråd skapar en ny instans av objektet och referensen till det sparas på trådens lokala stack (som inga andra trådar kommer åt)
Vad kan man säga om två trådar som startas direkt efter varandra?
Man kan inte säkerställa vilken som kommer starta eller avsluta först.
Hur fungerar context switch?
- En tråd får en förbestämd tidsperiod av processorn
- När tiden gått ut sparas trådens kontext och processorn går vidare till nästa tråd
Väntar processorn på att en tråd ska bli klar med sin operation innan den context switchar? (by default)
Nej.