2010-06-30 9 views
12

E 'possibile, dal momento che Apple ha aperto il codice (libdispatch?) Sono un po' confuso su come si possa fare uso di questo. È simile a una libreria con un'API che qualsiasi applicazione può utilizzare o una funzionalità del sistema operativo integrata in Mac OS X? L'applicazione "for" per Mac e iPhone (con iOS 4) può utilizzare da sola questa libreria?Utilizzo di grand central dispatch in Linux

Suppongo che si debba eseguire una porta per rendere gcc compatibile anche con la nuova semantica introdotta da Apple.

risposta

8

Dopo aver letto il Ars Technica overview, sembra ci sono diverse sfide

  • GCD fa ampio uso di blocchi (un'estensione ad Apple di C che si avvicina chiusure) il che significa che il compilatore deve supportare i blocchi. La versione standard di gcc non ha supporto per i blocchi, quindi dovrai portare le modifiche di Apple su Linux gcc o usare clang/llvm.
  • La versione di GCD per Mac OS X include del codice nel kernel. Chiaramente, se sono necessarie modifiche del kernel a Linux per supportare GCD, questo è un grande lavoro. Tuttavia, sembra che sia possibile una porta dello spazio utente.
  • GCD è concesso in licenza con la licenza Apache. Apparentemente, questa licenza non è compatibile con GPL v2. Quindi non puoi utilizzare GCD in nessuna app distribuita sotto GPL v2. GPL v3 è OK, quindi un'app con licenza GPL v2 "o successiva" è OK.

Detto questo, il FreeBSD port è stato completato, quindi deve essere possibile.

+5

Vorrei comunque passare a Clang. Gli errori sono molto più convenienti. :) –

+0

@ Time Machine: sono d'accordo. Mi sono già trasferito a clang per i miei progetti Xcode. Presumibilmente si compila più rapidamente e produce anche un codice ottimizzato, anche se non ho mai visto i benchmark per dimostrarlo. – JeremyP

14

È quasi un anno più tardi, ma io sono using it quite happily su Ubuntu Natty. I pacchetti corretti stanno arrivando in Oneiric.

+0

Grazie per il seguito, Chris. – prabhu

+0

Non più disponibile :(. Potresti aggiornare il link? – bacchus

+0

@bacchus Da quando Twitter ha cannibalizzato Posterous (e il mio blog!) Non ho avuto il tempo di rimetterlo da qualche parte, grazie per avermelo ricordato! so quando torna online –

Problemi correlati