Do 2 objects créant des files d'attente série avec le même nom partagent la même queue

Je ne suis pas sûr du comportement, parce que je soupçonne que je suis dans une impasse,

J'ai une class avec plusieurs objects – chaque object crée une queue avec le même nom. Je ne suis pas sûr si GCD réutilise la même queue entre les objects ou s'ils partagent simplement le même nom.

Par exemple

@interface MyClass -(void)doSomeWork @property (nonatomic,strong) dispatch_queue_t myQueue; @end @implementation MyClass -(id)init { self = [super init]; self.myQueue = dispatch_queue_create("MyQueue",DISPATCH_QUEUE_SERIAL); return self; } -(void)doSomeWork { dispatch_async(self.myQueue,^{ // some long running work }); } @end @interface SomeClassWhichCreatesALotOfObjects @end @implementation SomeClassWhichCreatesALotOfObjects -(void)someMethod { for(int i = 0; i < 10000; i++) { MyClass *object = [MyClass new]; [object doSomeWork]; // are these running in serial to each other or are each offset to the queue their object has created? Can't understand from the debugger } } @end 

Comme l'indique la documentation d'Apple, l'label est:

Une label de string à attacher à la queue pour l'identifier de manière unique dans les outils de debugging tels que Instruments …

Il est utilisé comme un indice, rien de plus.

MODIFIER

Voici le code que vous voulez pour utiliser une queue partagée.

 + (dispatch_queue_t)sharedQueue { static dispatch_queue_t sharedQueue; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedQueue = dispatch_queue_create("MyQueue", NULL); }); return sharedQueue; } 

dispatch_queue_create fait exactement ce que le nom suggère, il crée une queue de répartition. L'label que vous lui donnez n'a pas besoin d'être unique, elle est simplement utilisée à des fins de debugging.