Thread (informatica)

Geheugenverdeling single-threaded versus multi-threaded

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

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 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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.