Thread (informatica)
Een thread[1] is de kleinste opeenvolging van geprogrammeerde instructies die onafhankelijk van elkaar door een scheduler kunnen worden beheerd. Computers met multitasking kunnen hun tijd zeer snel tussen verschillende taken verdelen. Multiprocessor-computers kunnen ook gelijktijdig taken uitvoeren. Door een grotere taak te verdelen in meerdere threads kunnen sommige taken sneller uitgevoerd worden door de computer.
In de meeste besturingssystemen vormen twee proceskenmerken de kern van een proces:
- bezit van bronnen
- inroosteren (scheduling) en uitvoering
Deze twee kenmerken zijn onafhankelijk en kunnen daarom ook onafhankelijk behandeld worden door het systeem. Om een onderscheid te maken wordt de eenheid voor toedeling (dispatch) doorgaans een thread genoemd en de eenheid voor bronbezit een proces of taak. Een proces kan meerdere threads bevatten.
Techniek
[bewerken | brontekst bewerken]Het gebruik van meerdere threads wordt multithreading genoemd. In tegenstelling tot een proces dat een volledig geïsoleerd geheugengebied heeft, delen de verschillende threads van een bepaald proces hetzelfde codegebied, datagebied en heapgebied. Enkel de stapels zijn uniek bij threads. Hierdoor is er weinig OS-overhead bij het schakelen tussen threads in een proces aangezien geen volledige contextwisseling dient uitgevoerd te worden. Daarom wordt een thread ook weleens een light-weight process genoemd in sommige operating systems.
Voordelen van threads zijn onder andere de mogelijkheid om de verwerking over meerdere processoren te splitsen. Ook op een machine met één processor kunnen threads voordeel bieden: zo kan één thread rekentaken uitvoeren terwijl de andere zich kan bekommeren over invoer of uitvoer. Onmerkbaar voor de gebruiker, wordt in een proces geschakeld tussen verschillende threads. Aan individuele threads wordt een deel van de beschikbare processortijd toegekend, zodat taken tegelijkertijd uitgevoerd lijken te worden. Zoals bijvoorbeeld animatie op een GUI.
Een webbrowser kan bijvoorbeeld met behulp van threads verschillende taken tegelijk uitvoeren zoals het ophalen van een webpagina van een server en het afhandelen van de acties van de gebruiker in menu's of dialoogvensters. Vaak moeten de threads die de communicatie met de server verrichten, wachten tot boodschappen zijn overgekomen en beantwoord. Threads worden dan gebruikt om de gebruikersinterface interactief te houden terwijl op antwoord wordt gewacht.