Grand Central Dispatch ( GCD ) er en teknologi utviklet av Apple Inc. for å optimalisere applikasjonskjøring på flerkjernesystemer eller andre systemer basert på symmetrisk multiprosessering . [1] Dette implementerer parallellitet på trådnivå etter trådpoolmønsteret . Den første versjonen av teknologien ble inkludert i OS X Snow Leopard . Kildekoden til biblioteket som implementerer libdispatch GCD-tjenesten ble distribuert under Apache-lisensen 10. september 2009 . [2]
GCD fungerer ved å tillate programmereren å avgrense spesifikke deler av kode som kan kjøres parallelt ved å definere dem som blokker, [3] For dette formål utvider den syntaksen til programmeringsspråket C , C ++ og Objective-C [3] Å følge trådpoolmønsteret under programutførelse settes blokker i en kø og utføres så snart en prosesseringsenhet blir tilgjengelig. [3] [4]
GCD bruker tråder for å utføre blokker, men dette er helt gjennomsiktig for programmereren. Dette gjør at programmereren kan konsentrere seg om utviklingen av algoritmene uten å bry seg om trådhåndtering og synkronisering av dem. Å lage blokker er raskt og enkelt siden det kan gjøres med bare 15 instruksjoner, mens å lage en tråd uten å bruke GCD krever hundrevis av instruksjoner. [3]
En blokk opprettet med GCD kan brukes til å lage en oppgave som skal settes i kø for utførelse, eller den kan tilordnes en hendelseskilde. Hvis en blokk er tilordnet en hendelseskilde når hendelsen inntreffer, aktiveres blokken og plasseres i en utførelseskø. Denne driftsmodusen er definert av Apple som mer effektiv enn å lage en tråd som må vente på at en hendelse skal oppstå.
Apple har lagt til lambda-uttrykkshåndtering til C, C++ og Objective-C for å forenkle utviklingen av GCD-blokker.
Forsendelsesrammeverket definerer ulike typer data og funksjoner for å manipulere dem.