2011-10-27 4 views
8

Ho un requisito per eseguire un piccolo insieme di attività correlate su un thread personalizzato creato per loro. Le attività saranno pianificate da classi diverse. Sto pianificando di utilizzare GCD's dispatch_queue_create per creare il thread personalizzato e pianificare l'attività su di esso. Nota che tutte le attività correlate devono essere eseguite solo su quel thread in ordine.
Quindi la mia domanda è se chiamo dispatch_queue_create ("my_custom_thread_label", NULL) con la stessa etichetta di molte classi nella mia base di codici, tutto alla fine verrà mappato su un solo thread? O ho bisogno di crearlo in un posto e ottenere un riferimento ad esso quando necessario? Grazie.dispatch_queue_create più chiamate con la stessa etichetta

risposta

8

È necessario crearlo in un unico punto e passare il puntatore.

+4

Ma cosa succede se chiami più volte "dispatch_queue_create" con la stessa etichetta? – Endophage

+2

Ti dà una nuova istanza della coda e quella vecchia perde, è proprio come un oggetto. – odyth

+0

odyth - che sembra incoerente con la documentazione: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dispatch_queue_create.3.html L'etichetta viene fornita solo FYI ed è (in fatto) facoltativo. Potresti fornire un'etichetta vuota. Ogni volta che chiami d_q_c() restituisce un oggetto * nuovo * in coda - senza perdite. –