tôi gặp sự cố khi tạm ngưng truy vấn gcd. Dưới đây là một số mã đó chứng tỏ vấn đề:Tạm dừng sự cố truy vấn 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;
}
Những gì tôi đang cố gắng để làm là đình chỉ, phát hành và reinitialise truy vấn q khi kiểm tra hàm được gọi lần thứ hai, nhưng apparenty mã của tôi là sai và cả hai trường hợp truy vấn q tiếp tục chạy.
Trợ giúp của bạn được đánh giá cao, cảm ơn bạn.
Bạn có thể muốn [sử dụng 'NSOperationQueue' thay thế] (http://stackoverflow.com/a/32807804/199360). – adib