Un site d'Apple, il y a modèle suggéré pour l'utilisation des files d'attente GCD au lieu de serrures:GCD Queues au lieu de serrures: données de lecture pour la cellForRowAtIndexPath de Tableview
// Create queue early
queue = dispatch_queue_create("com.example.tweets", NULL);
// executed main thread
- (NSArray *)getTweets
{
__block NSArray *a;
dispatch_sync(queue, ^{
a = [tweets copyTweets];
});
return a;
}
// executed on background thread
- (void)addTweet:(Tweet *)tw
{
dispatch_async(queue, ^{
[tweets addTweet:tw];
});
}
Comment traitez-vous avec les serrures et les sections critiques avec GCD lorsque vous avoir un thread producteur ajoutant beaucoup de tweets à la fois, au lieu d'un par un et vous devez lire un tweet à la fois pour cellForRowAtIndexPath de UITableView?
Si vous gardez la 'synchronisation' sur chaque 'lecture', cela ne causera-t-il pas beaucoup de blocs inutiles? Ceci est vraiment écrit une fois de temps en temps, mais lit souvent scénario ..