Vad är multitasking?
När flera program verkar* köras samtidigt
*från engelskans seem to
Vad är multithreading?
En form av multitasking inuti en applikation
Vad är en tråd?
Ett enstaka sekventiellt kontrollflöde inom ett program/oberoende enhet av körning inom en process
Vad kan man också kalla en tråd?
Light-weight process
Vilket av dessa har en tråd och vilket har den inte:
En tråd har egen stack, men inte egen adress space.
Nämn 2 fördelar med multithreading:
- förbättrad responsivitet/svarstid
Förklara trådar i relation till concurrently och parallel:
Trådar körs självständigt med concurrently. De kan vara parallela om de körs på olika CPUs.
Vad delar trådar på?
Processresurser, inklusive minne.
Vad har en tråd som sitt eget (dvs inte delat)?
Stack memory där program counter och lokal data lagras
Nämn fyra nackdelar med multithreading:
Ge fyra exempel på typiska tillstånd en tråd kan befinna sig i.
Varför är det tids- och prestandakrävande för CPUn att växla mellan trådar?
För att den måste lagra tillståndet för en process eller tråd för att kunna återställa och återuppta den igen.
Varför är en thread-switch “billigare” än en process-switch?
För att trådarna delar samma minne
Nämn 5 fördelar med multithreading:
Nämn 3 situationer där multithreading passar:
Vad är den största utmaningen med multithreading?
Synkronisation
Varför behöver tillgängligheten till delat data synkroniseras mellan trådarna?
För att trådar delar processminnet, om flera trådar kan komma åt och förändra en variabels tillstånd kommer programmet inte att fungera som det ska
Vad är poängen med multithreading?
Att använda mer än en tråd i en applikation som körs samtidigt inom processen