Grand Central Dispatch (GCD) regnes som en av de viktigste nyhetene i Snow Leopard-utgave av Apples Mac OS X, som ble lansert i slutten av august.
Dette er en teknologi som skal bidra til mer optimalisert utnyttelse av prosessorer med flere kjerner. Nå har Apple gjort «user space»-implementeringen av GCD til åpen kildekode gjennom libdispatch-prosjektet. Mac OS X Kernel-støtten for GCD er på sin side tilgjengelig gjennom xnu-prosjektet. Begge deler, samt flere andre, relaterte komponenter, er utgitt med Apache License, Version 2.0.
Hvorfor Apple gjør GCD til åpen kildekode, kan man bare spekulere på, men en mulig årsak er at Apple ønsker å gjøre det mer attraktivt for programvareutviklere å ta i bruk GCD, dersom dette er tilgjengelig for programvare til flere operativsystemer, ikke bare til Mac OS X. Det er likevel ikke sikkert at Linux-fellesskapet, Microsoft eller andre vil bite på agnet Apple nå har kastet ut.
Med GCD og GCD-tilpassede applikasjoner overlates håndteringen av tråder til selve operativsystemet, i stedet for at dette gjøres av applikasjonene skal tråder bli håndtert av selve operativsystemet i stedet for av den enkelte applikasjon.
Dette skal gjøre det mulig for systemet å tilpasse antallet tråder til antallet logiske prosessorer som er tilgjengelig. Samtidig skal applikasjonene gjøres mer effektive ved at de bare bruker det antallet tråder som er nødvendige for det arbeidet som gjøres. Dette skal gjøres ved at GCD gjør det mulig for utviklere å strukturere koden på en måte som identifiserer tilgjengelige muligheter for parallellkjøring.
Apple nevner i beskrivelsen av GCD at dersom en vanlig applikasjon trenger 20 tråder når den jobber med maksimal kapasitet, vil den også kunne opprettholde de 20 trådene når den ikke har noe å gjøre. Dersom en GCD-tilpasset applikasjon kjøres i et system med GCD, vil den derimot frigjøre ressurser når den ikke bruker dem. Dette skal redusere svartidene i hele systemet.
GCD skal også forenkle jobben til utviklere som forsøker å utnytte de tilgjengelige ressursene i et flerkjernet system i størst mulig grad. I stedet for å forholde seg til tråder og låsing av data, innfører Apple med GCD to «nye» begreper, blokker (blocks) og køer (queues).
Blokkene kan bestå av både funksjoner, argumenter og data og tilbys som en utvidelse til C, C++ og Objective-C. Køene brukes til å organisere blokkene basert på hvordan utvikleren mener at de skal kjøres.
Samtidig skal bruken av køer og blokker bidra til mindre og ryddigere kode.
Apple har utgitt mer informasjon om hvordan GCD fungerer i dette dokumentet, samt på prosjektsidene for libdispatch.
Les også:
- [24.08.2009] Snow Leopard kommer denne uken