Dat is niet helemaal een nauwkeurig voorbeeld van multithreading. Hoewel het * lijkt * alsof Microsoft Word beide dingen tegelijkertijd doet, is het waarschijnlijker dat het een combinatie van:
* asynchrone I/O: Microsoft Word stuurt een verzoek om het bestand te lezen en een verzoek om het document af te drukken. Het wacht niet tot een van beide bewerkingen is voltooid voordat het doorgaat. Het besturingssysteem behandelt het lezen en afdrukken op de achtergrond, terwijl het woord blijft reageren op de gebruiker.
* Meerdere processen: Moderne besturingssystemen zijn erg goed in het jongleren van meerdere taken. Het is mogelijk dat de bestandslezing plaatsvindt in een apart proces dan het afdrukken, waardoor de illusie van gelijktijdige actie wordt gegeven.
True multithreading:
Multithreading binnen een enkel proces (zoals Word) zou inhouden:
* Meerdere threads: Stel je voor dat Word meerdere kleine programma's (threads) erin draaien.
* Gedeelde bronnen: Deze threads zouden hetzelfde geheugen en bronnen delen, waardoor zeer efficiënte communicatie tussen hen mogelijk is.
* Gelijktijdige uitvoering: De threads kunnen mogelijk instructies tegelijkertijd uitvoeren (op moderne multi-core processors).
Voorbeeld van multithreading in Word:
* spellingcontrole: Word kan één thread hebben die zich toelegt op het controleren van spelling op de achtergrond terwijl u typt. Hiermee kunt u doorgaan met typen zonder te wachten tot de spellingcontrole is voltooid.
* Autosave: Een andere thread kan op de achtergrond worden uitgevoerd om uw document regelmatig op te slaan.
Het belangrijkste verschil:
Het voorbeeld dat u hebt gegeven, belicht een gemeenschappelijke misvatting. Hoewel besturingssystemen erg goed zijn in het creëren van de illusie van gelijktijdige taken, wordt dit vaak bereikt door asynchrone I/O en meerdere processen. Echte multithreading omvat meerdere onafhankelijke threads binnen een enkel proces en bieden nog fijner korrelige controle en efficiëntie. |