Gelijktijdigheid (informatica)
informaticaterm / Uit Wikipedia, de vrije encyclopedia
In de informatica is gelijktijdigheid (Engels: concurrency) het zich in dezelfde tijdsperiode afspelen van verschillende processen of activiteiten, die dan gelijktijdig worden genoemd. Deze term wordt met name gebruikt als de processen in kwestie geacht worden om samen te werken, bijvoorbeeld door het uitwisselen van informatie of het delen van gemeenschappelijke voorzieningen, en zo de algehele voortgang te bevorderen.
Tegengesteld hieraan is een sequentieel proces, waarin alle stappen strikt na elkaar worden uitgevoerd, en dus van gelijktijdigheid geen sprake is.
Het probleemloos laten samenwerken van gelijktijdige processen blijkt tal van ingewikkelde moeilijkheden met zich mee te brengen die zich bij sequentiële processen helemaal niet voordoen.
In de werkelijkheid zijn gelijktijdige processen heel gewoon: zo kunnen bijvoorbeeld de activiteiten van verschillende werknemers van hetzelfde bedrijf als zodanig worden beschouwd. Bij het programmeren van computers daarentegen werd er traditioneel meestal van uitgegaan dat er zich slechts een proces tegelijk kan afspelen, namelijk het strikt sequentieel uitvoeren van een reeks instructies door de processor. Dit gaat niet langer op voor moderne computers, die meerdere processoren hebben met elk meerdere rekenkernen, en waarin zelfs een enkele rekenkern reeksen instructies niet langer strikt sequentieel uitvoert, maar geparallelliseerd. Bovendien worden softwaresystemen veel vaker dan vroeger gedistribueerd opgezet, waarbij meer dan een computer samenwerkt om het uiteindelijke resultaat te bereiken.[1]
Verscheidene wiskundige modellen zijn ontwikkeld voor de beschrijving van gelijktijdige processen, waaronder petri-netten, procescalculi, de parallelle RAM-machine, het actormodel en coördinatietalen zoals Linda en Reo.