Belangrijk verschil : Thread en Process zijn twee nauw verwante termen bij multi-threading. Het belangrijkste verschil tussen de twee termen is dat de threads deel uitmaken van een proces, dat wil zeggen dat een proces een of meer threads kan bevatten, maar een thread kan geen proces bevatten.
Bij het programmeren zijn er twee basiseenheden voor uitvoering: processen en threads. Ze voeren beiden een reeks instructies uit. Beide worden geïnitieerd door een programma of het besturingssysteem. Dit artikel helpt om onderscheid te maken tussen de twee eenheden.
Een proces heeft een onafhankelijke uitvoeringsomgeving. Het heeft een complete set van privé-runtime-resources; in het bijzonder heeft elk proces zijn eigen geheugenruimte. Processen worden vaak beschouwd als vergelijkbaar met andere programma's of toepassingen. Het runnen van een enkele applicatie kan echter in feite een reeks samenwerkende processen zijn. Om de communicatie tussen de processen te vergemakkelijken, gebruiken de meeste besturingssystemen Inter Process Communication (IPC) -bronnen, zoals leidingen en sockets. De IPC-bronnen kunnen ook worden gebruikt voor communicatie tussen processen op verschillende systemen. De meeste toepassingen in een virtuele machine worden als één proces uitgevoerd. Het kan echter aanvullende processen maken met behulp van een procesbuilder-object.
In computers kan een thread zelfs de kleinste reeks geprogrammeerde instructies uitvoeren die onafhankelijk van elkaar door een besturingssysteem kan worden beheerd. De toepassingen van threads en processen verschillen van het ene besturingssysteem tot het andere. De threads zijn echter gemaakt van en bestaan binnen een proces; elk proces heeft er minstens één. Meerdere threads kunnen ook in een proces bestaan en bronnen delen, wat helpt bij een efficiënte communicatie tussen threads.
Op een enkele processor vindt multitasking plaats als de processor wisselt tussen verschillende threads; het staat bekend als multithreading. Het schakelen gebeurt zo vaak dat de threads of taken tegelijkertijd worden weergegeven. Draden kunnen echt gelijktijdig zijn op een multiprocessor- of multicore-systeem, waarbij elke processor of kern de afzonderlijke threads tegelijkertijd uitvoert.
Samenvattend kunnen threads worden beschouwd als lichtgewichtprocessen, omdat ze eenvoudige sets instructies bevatten en binnen een groter proces kunnen worden uitgevoerd. Computers kunnen op hetzelfde moment meerdere threads en processen uitvoeren.
Vergelijking tussen proces en draad:
Werkwijze | Draad | |
Definitie | Een uitvoerende instantie van een programma wordt een proces genoemd. | Een thread is een subset van het proces. |
Werkwijze | Het heeft een eigen kopie van het gegevenssegment van het bovenliggende proces. | Het heeft directe toegang tot het datasegment van zijn proces. |
Communicatie | Processen moeten interprocescommunicatie gebruiken om te communiceren met broer / zus-processen. | Draden kunnen direct communiceren met andere threads van het proces. |
Algemene kosten | Processen hebben aanzienlijke overhead. | Draden hebben bijna geen overhead. |
schepping | Voor nieuwe processen is duplicatie van het bovenliggende proces vereist. | Nieuwe threads kunnen eenvoudig worden gemaakt. |
Controle | Processen kunnen alleen controle uitoefenen over kindprocessen. | Draden kunnen aanzienlijke controle uitoefenen over draden van hetzelfde proces. |
Veranderingen | Elke wijziging in het bovenliggende proces heeft geen invloed op onderliggende processen. | Elke wijziging in de hoofdthread kan van invloed zijn op het gedrag van de andere threads van het proces. |
Geheugen | Run in afzonderlijke geheugenplaatsen. | Ren in gedeelde geheugenruimtes. |
Bestandsdescriptors | De meeste bestandsdescriptoren worden niet gedeeld. | Het deelt bestandsbeschrijvingen. |
Bestandssysteem | Er is geen uitwisseling van de context van het bestandssysteem. | Het deelt de context van het bestandssysteem. |
Signaal | Het deelt de signaalverwerking niet. | Het deelt de signaalverwerking. |
Gecontrolleerd door | Proces wordt bestuurd door het besturingssysteem. | Threads worden bestuurd door programmeurs in een programma. |
Afhankelijkheid | Processen zijn onafhankelijk. | Draden zijn afhankelijk. |