わからない、同じ名前を共有して同じキューをシリアルキューを作成し、は、2つのオブジェクト、私はデッドロックを取得しています疑いがあるため、行動上の
は、私は複数のオブジェクトを持つクラスを持っていますか - 各オブジェクトが持つキューを作成します同じ名前。 GCDがオブジェクト間で同じキューを再利用しているのか、同じ名前を共有しているのかはわかりません。 Appleのドキュメント状態として
例えば@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
これらは別々のキューです。今、どのように私は同じクラスのオブジェクトの間で使用される1つのキューを作成することができます –
私はコードを含める答えを編集しました。 –
キュー名文字列をこの関数のパラメータとして渡しても構いませんか? @GuyKogus –