4.1 - Overview (p.153)
- Thread = Basis unit van CPU gebruik.
- Heeft een eigen: ThreadID, program counter, register set en stack.
- Deelt met threads van hetzelfde proces: code, data, os resources, open files en signals.
- Multithreaded proces kan meerdere taken tegelijkertijd aan.
Single threaded process wordt ook wel een heavyweight process genoemd.
Voordelen voor multithreaded programming:
- Responsiveness
- Wanneer een deel van de applicatie is geblokkeerd/bezig kunnen andere delen gewoon verder.
- Delen van resources
- Anders dan processen, delen threads van nature resources van het eigen process met elkaar.
- Economish
- Het is meer kostbaar om processen te beheren, dan om threads te beheren. Vanwege de overhead groote.
- Schaalbaar
- Op een multiprocessor systeem kunnen meerdere threads parallel werken (parallelism).
- Responsiveness
Challenges voor multithreaded programming:
- Verdelen van activiteiten
- Vinden van taken die verdeelt kunnen worden over meerdere threads.
- Balans
- Het kan niet waard zijn om een taak in een aparte thread te laten draaien wanneer het niet genoeg opbrengt aan het process.
- Opdelen van data
- De data moet worden opgedeeld zodat deze kan worden gemanipuleerd per thread.
- Afhankelijkheid van data
- Als een thread afhankelijk is van de output van een andere, kunnen deze threads dus niet tegelijkertijd draaien.
- Testen en debuggen
- Doordat verschillende threads tegelijkertijd draaien is het moeilijk om deze te testen en te debuggen.
- Verdelen van activiteiten