Grand Central Dispatch

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Grand Central Dispatch ( GCD ) este o tehnologie dezvoltată de Apple Inc. pentru a optimiza execuția aplicației pe sisteme multi-core sau alte sisteme bazate pe multiprocesare simetrică . [1] Aceasta implementează paralelism la nivel de fir urmând modelul grupului de fire . Prima versiune a tehnologiei a fost inclusă în OS X Snow Leopard . Codul sursă al bibliotecii care implementează serviciul libdispatch GCD a fost distribuit sub licența Apache pe 10 septembrie 2009 . [2]

Cum funcționează modelul grupului de fire.

GCD funcționează permițând programatorului să delimiteze porțiuni specifice de cod care pot fi executate în paralel definindu-le ca blocuri, [3] În acest scop extinde sintaxa limbajului de programare C , C ++ și Objective-C [3] Urmărirea modelului de pool de fire în timpul execuției programului, blocurile sunt puse într-o coadă și sunt executate imediat ce o unitate de procesare devine disponibilă. [3] [4]

GCD folosește fire pentru a executa blocuri, dar acest lucru este total transparent pentru programator. Acest lucru permite programatorului să se concentreze asupra dezvoltării algoritmilor fără să se preocupe de gestionarea firelor și de sincronizarea acestora. Crearea blocurilor este rapidă și ușoară, deoarece se poate face cu doar 15 instrucțiuni, în timp ce crearea unui fir fără a utiliza GCD necesită sute de instrucțiuni. [3]

Un bloc creat cu GCD poate fi folosit pentru a crea o sarcină care urmează să fie pusă în coadă pentru executare sau poate fi atribuit unei surse de eveniment. Dacă un bloc este atribuit unei surse de eveniment atunci când apare evenimentul, blocul este activat și plasat într-o coadă de execuție. Acest mod de funcționare este definit de Apple ca fiind mai eficient decât crearea unui thread care trebuie să aștepte ca un eveniment să aibă loc.

Apple a adăugat gestionarea expresiilor lambda la C, C ++ și Objective-C pentru a simplifica dezvoltarea blocurilor GCD.

Caracteristici

Cadrul de expediere definește diferite tipuri de date și funcții pentru a le manipula.

  • Cozile de expediere sunt cozi care conțin blocuri de cod sau funcții care sunt executate. Biblioteca creează automat mai multe cozi cu niveluri de prioritate diferite și execută mai multe sarcini simultane selectând numărul optim de sarcini de executat în funcție de condițiile curente de operare. Un utilizator al bibliotecii poate crea câte cozi de serie dorește, într-o coadă de serie sarcinile sunt executate într-un mod serial și, prin urmare, executarea unui bloc este critică pentru executarea oricărui alt bloc al cozii și, prin urmare, serialul cozile pot fi folosite pentru a gestiona resursele partajate în loc de alte structuri, cum ar fi blocările .
  • Sursele de expediere sunt obiecte pe care pot fi înregistrate blocuri de cod care vor fi executate în cazul unui eveniment precum crearea unui fișier sau activarea unui eveniment POSIX.
  • Grupurile de expediere sunt obiecte care grupează mai multe blocuri. Blocurile sunt adăugate la grup și utilizatorul poate utiliza datele procesate atunci când toate blocurile au fost executate.
  • Semaforele de expediere sunt obiecte care permit utilizatorului bibliotecii să limiteze execuția paralelă doar la unele blocuri.

Notă

  1. ^ Apple Previews Mac OS X Snow Leopard to Developers Arhivat 19 martie 2012 la WebCite ., 9 iunie 2008.
  2. ^ Apple lansează Grand Central Dispatch ca Open Source , la theapplelounge.com , The Apple Lounge, 11-09-2009. Adus 11-09-2009 .
  3. ^ a b c d Apple Technical Brief on Grand Central Dispatch Arhivat 12 iunie 2009 la Internet Archive ., 9 iunie 2009.
  4. ^ WWDC 2008: Nou în Mac OS X Snow Leopard Arhivat 17 octombrie 2008 la Internet Archive . (accesat la 18.06.2008)

linkuri externe