Non sono sicuro sul comportamento, perché ho il sospetto che sto ottenendo una situazione di stallo,Fare 2 oggetti creando code di serie con lo stesso nome di condivisione stessa coda
Ho una classe con più oggetti - ogni oggetto crea una coda con lo stesso nome Non sono sicuro che GCD stia riutilizzando la stessa coda tra gli oggetti o se condividono solo lo stesso nome.
Per esempio
@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
quindi sono code separate. Ora come posso creare una coda usata tra oggetti della stessa classe –
Ho modificato la risposta per includere il codice. –
È corretto passare la stringa del nome della coda come parametro per questa funzione? @GuyKogus –