Objective-C 对 Grand Central Dispatch 的包装,包含每个单独的调度调用的方法以及一些有用的补充。
欢迎以 Pull Requests、功能请求或问题报告的形式做出贡献!特别是建议改进 Dispatch Sources、Dispatch IO 和 Dispatch Data 的 API 将会非常感谢。
dispatch_get_specific
检测当前队列。-sync:
方法。dispacth_debug
的 -log:
方法。dispatch_once
宏。GODQueue *clusterQueue = [[GODQueue alloc] initWithName:@"cluster" concurrent:YES];
GODQueue *isolationQueue = [[GODQueue alloc] initWithName:@"isolation" concurrent:YES];
[clusterQueue apply:100 block:^(NSUInteger index) {
[isolationQueue sync:^{
// access shared resource
}];
// iterative calculation
[isolationQueue barrierAsync:^{
// modify shared resource
}];
}];
[clusterQueue barrierAsync:^{
// finalize data
[[GODQueue mainQueue] async:^{
// update UI
}];
}];
dispatch_queue_t clusterQueue = dispatch_queue_create("cluster", DISPATCH_QUEUE_CONCURRENT);
dispatch_queue_t isolationQueue = dispatch_queue_create("isolation", DISPATCH_QUEUE_CONCURRENT);
dispatch_apply(100, clusterQueue, ^(size_t index) {
dispatch_sync(isolationQueue, ^{
// access shared resource
});
// iterative calculation
dispatch_barrier_async(isolationQueue, ^{
// modify shared resource
});
});
dispatch_barrier_async(clusterQueue, ^{
// finalize data
dispatch_async(dispatch_get_main_queue(), ^{
// update UI
});
});
版本 0.5.0
MIT 许可证,版权所有 © 2013 Martin Kiss
软件按“原样”提供,概不承担任何保证...
更多详情请参阅 LICENSE.md