gcdクエリを中断するのに問題があります。ここでは、問題を示し、いくつかのコードは次のとおりです。、解除と再初期化クエリQ機能テストが二度目に呼ばれているが、apparenty私のコードが間違っていると、両方のインスタンスの私は中断されてやろうとしているGCDクエリの問題を中断する
static dispatch_queue_t q=nil;
static void test(int a){
if(q){
dispatch_suspend(q);
dispatch_release(q);
q=nil;
}
q=dispatch_get_global_queue(0,0);
dispatch_async(q,^ {
while(1){NSLog(@"query %d",a);sleep(2);}
});
}
int main(int argc, const char* argv[]){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
test(1);
//blah blah blah
test(2);
while(1){}
[pool release];
return 0;
}
クエリqは引き続き実行されます。
ご協力いただきありがとうございます。アップルGCD Referenceから
代わりに[NSOperationQueue'を使用する](http://stackoverflow.com/a/32807804/199360)が必要な場合があります。 – adib