GrandObjectDispatch 0.5.0

GrandObjectDispatch 0.5.0

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Martin Kiss 维护。



  • 作者
  • Martin Kiss

Grand Object Dispatch

Objective-C 对 Grand Central Dispatch 的包装,包含每个单独的调度调用的方法以及一些有用的补充。

欢迎以 Pull Requests、功能请求或问题报告的形式做出贡献!特别是建议改进 Dispatch SourcesDispatch IODispatch Data 的 API 将会非常感谢。

补充

  • 使用 dispatch_get_specific检测当前队列
  • 无锁-sync: 方法。
  • 反向 DNS 标签的便利 初始化器
  • 主队列全局并发队列访问器
  • 用于替换已弃用的 dispacth_debug-log: 方法。
  • 好的 dispatch_once 宏。
  • 等待 信号量 的方法,接受 时间段日期 或无限期等待。
  • 特有类用于 Dispatch Timer (类型为 Timer 的 Dispatch Source)。

示例代码

Grand Object Dispatch

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
    }];
}];

Grand Central Dispatch

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