谢谢!
解决方法 当你想执行一个块并等待结果时使用它。其中一个示例是使用调度队列而不是锁进行同步的模式。例如,假设您有一个共享的NSMutableArray a,访问由调度队列q调解。后台线程可能附加到数组(async),而你的前台线程正在拉动第一个项目(同步):
NSMutableArray *a = [[NSMutableArray alloc] init];// All access to `a` is via this dispatch queue!dispatch_queue_t q = dispatch_queue_create("com.foo.samplequeue",NulL);dispatch_async(q,^{ [a addobject:something]; }); // append to array,non-blocking__block Something *first = nil; // "__block" to make results from block availabledispatch_sync(q,^{ // note that these 3 statements... if ([a count] > 0) { // ...are all executed together... first = [a objectAtIndex:0]; // ...as part of a single block... [a removeObjectAtIndex:0]; // ...to ensure consistent results }});总结
以上是内存溢出为你收集整理的可可 – 使用dispatch_sync在大中央调度全部内容,希望文章能够帮你解决可可 – 使用dispatch_sync在大中央调度所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)