A draad is een pad dat wordt gevolgd tijdens de uitvoering van een programma. De meeste programma's die tegenwoordig worden geschreven, draaien als een enkele thread. Laten we zeggen dat een programma bijvoorbeeld niet in staat is toetsaanslagen te lezen tijdens het maken van tekeningen. Deze taken kunnen niet tegelijkertijd door het programma worden uitgevoerd. Dit probleem kan worden opgelost door middel van multitasking, zodat twee of meer taken tegelijkertijd kunnen worden uitgevoerd. Er zijn twee soorten multitasking: processorgebaseerd en threadgebaseerd. Op processors gebaseerde multitasking wordt volledig beheerd door het besturingssysteem, maar multitasking via multithreading kan tot op zekere hoogte door de programmeur worden beheerd. Het concept van multi-threading heeft een goed begrip van deze twee termen nodig – een proces en een rode draad . Een proces is een programma dat wordt uitgevoerd. Een proces kan verder worden onderverdeeld in onafhankelijke eenheden die bekend staan als threads. Een draad is als een klein, lichtgewicht proces binnen een proces. Of we kunnen zeggen dat een verzameling draden een proces is.
Toepassingen – Draadsnijden wordt op vrijwel elk gebied veel gebruikt. Het wordt tegenwoordig het meest gezien via internet, waar we allerlei soorten transactieverwerking gebruiken, zoals opwaarderen, online overboeken, bankieren enz. Threading is een segment dat de code in kleine delen verdeelt die zeer licht van gewicht zijn en de CPU minder belasten. geheugen, zodat het gemakkelijk kan worden uitgewerkt en een doel op het gewenste gebied kan worden bereikt. Het concept van draadsnijden is ontworpen vanwege het probleem van snelle en regelmatige veranderingen in de technologie en minder werk op verschillende gebieden vanwege minder toepassingen. Dan, zoals zegt, is de noodzaak het genereren van creatie of innovatie. Door deze benadering te volgen, ontwikkelt de menselijke geest het concept van draad om de mogelijkheden van programmeren te vergroten.
Levenscyclus van een draad
Er zijn verschillende fasen in de levenscyclus van een thread. Hieronder volgen de fasen die een draad tijdens zijn hele leven doorloopt.
- Nieuw: De levenscyclus van een geboren thread (nieuwe thread) begint in deze staat. Het blijft in deze staat totdat een programma start.
- Uitvoerbaar : Een thread kan worden uitgevoerd nadat deze is gestart. Het wordt geacht de hem opgedragen taak uit te voeren.
- Aan het wachten : Terwijl u wacht tot een andere thread een taak uitvoert, gaat de momenteel actieve thread in de wachtstatus en gaat vervolgens weer terug na ontvangst van een signaal van de andere thread.
- Getimed wachten: Een uitvoerbare thread krijgt deze status gedurende een specifiek tijdsinterval en gaat vervolgens terug wanneer het tijdsinterval afloopt of de gebeurtenis plaatsvindt waarop de thread heeft gewacht.
- Beëindigd (dood) : Een thread komt in deze status terecht nadat zijn taak is voltooid.
Soorten uitvoering in besturingssysteem
Er zijn twee soorten uitvoeringen:
- Gelijktijdige uitvoering: Dit gebeurt wanneer een processor erin slaagt bronnen tussen threads te schakelen in een multithreaded proces op één processor.
- Parallelle uitvoering: Dit gebeurt wanneer elke thread in het proces tegelijkertijd en in hetzelfde multithreading-proces op een afzonderlijke processor draait
Nadelen van multithreading
Multithreading is complex en vaak moeilijk te hanteren. Het heeft een paar nadelen. Dit zijn:
- Als u de vergrendelingsmechanismen niet op de juiste manier gebruikt tijdens het onderzoeken van problemen met de toegang tot gegevens, bestaat de kans dat er problemen optreden zoals inconsistentie van gegevens en impasses.
- Als veel threads toegang proberen te krijgen tot dezelfde gegevens, bestaat de kans dat er een situatie van thread-honger ontstaat. Problemen met bronconflicten zijn een ander probleem waar de gebruiker last van kan hebben.
- Weergaveproblemen kunnen optreden als threads onvoldoende coördinatie hebben bij het weergeven van gegevens.
Voordelen van multithreading:
- Multithreading kan de prestaties en efficiëntie van een programma verbeteren door de beschikbare CPU-bronnen effectiever te gebruiken. Door meerdere threads tegelijkertijd uit te voeren, kan het profiteren van parallellisme en de algehele uitvoeringstijd verkorten.
- Multithreading kan de responsiviteit verbeteren in toepassingen waarbij gebruikersinteractie betrokken is. Door tijdrovende taken te scheiden van de rode draad, kan de gebruikersinterface responsief blijven en niet vastlopen of niet meer reageren.
- Multithreading kan een beter gebruik van hulpbronnen mogelijk maken. In een servertoepassing kunnen bijvoorbeeld meerdere threads binnenkomende clientverzoeken tegelijkertijd verwerken, waardoor de server meer clients tegelijkertijd kan bedienen.
- Multithreading kan een betere code-organisatie en modulariteit mogelijk maken door complexe taken in kleinere, beheersbare uitvoeringseenheden te verdelen. Elke thread kan een specifiek deel van de taak afhandelen, waardoor de code gemakkelijker te begrijpen en te onderhouden is.