GDC的理解
来源:互联网 发布:好听的男性网络名字 编辑:程序博客网 时间:2024/04/27 22:10
GCD为Grand Central Dispatch的缩写.
Grand Central Dispatch (GDC)是Apple 开发的一个多核变成交心的解决方法. 在Mac OSX10.6 雪豹中首次推出, 并在最近引入到了iOS4.0
GCD是一个替代注入NSThread 等技术的很高效和强打的技术/.
GCD完全可以处理注入数据说定和资源泄漏等复杂的一部变成问题
GCD可以完成很多事情, 但是这里仅关注在iOS应用中实现多线程所需的一些基础知识;
在开始之前, 血药i是提供给GCD队列是代码块, 用于在系统或者用户创建的队列上进行调度运行
声明一个队列
dispatch_queue_t myQueue = dispatch_queue_create("com.iphonedevblog.post", NULL);
其中第一个参数是表示队列的, 第二个参数是用来定义队列 的惨书 (目前不支持, 因此传入NULL).
执行一个队列
如下会异步执行传入的代码:
dispatch_async(muQueue,^{[self, doSomething];});
其中, 首先传入之前创建的队列, 然后提供由队列运行的代码块.
声明并执行一个队列
如果不需要保留要运行的队列的引用, 可以通过如下代码实现之前的功能
dispatch_async(dispatch_queue_create("com.iphonedevblog.post",NULL), ^{[self doSomething];});
如果需哟啊暂停一个队列, 可以调用如下代码.暂停一个队列会阻止和该队列相关的所有代码运行.
暂停一个队列
dispatch_suspend(myQueue);
如果暂停一个队列不要忘记恢复. 暂停和恢复的操作和内存管理中的retain和release类似. 调用dispatch_suspend会增早暂停技术, 而dispatch_relsume则会减少. 队列只有在暂停计数变成零的情况下才开始运行.
恢复一个队列
dispatch_resume(myQueue);
从队列中在主线程运行代码
有些操作无法在一部队列运行, 因此必须在主线程(每个应用都有一个)上运行, UI绘图以及任何对NSNotificationCenter的掉哟呵那个必须在主线程进行. 在另一个队列中访问主线程并运行代码如下:
dispatch_sync(dispatch_get_main_queue(),^{[self dismissLoinWindow];});
注意, dispatch_suspend (以及dispatch_resume) 在主线程不起作用,
使用GCD, 可以让你的程序不会失去响应, 多线程不容易使用, 使用了GCD, 会让它变得简单. 你无须专门进行线程管理
dispatch_queue_t t1 = dispatch_queue _create("1", NULL);
dispatch_queue_t t2 = dispatch_queue_create("2", NULL);
dispatch_async(t1, ^{
[self print1];
});
dispatch_async(t2, ^{
[self print2];
});
- GDC的理解
- GDC
- oc 的GDC和block
- GDC CHINA 外来的和尚会念经?
- GDC 2006上关于DirectX 10的消息
- GDC dispatch_semaphore
- GDC行业新闻
- GDC dispatch_semaphore
- GDC dispatch_semaphore
- GDC dispatch_semaphore
- GDC dispatch_semaphore
- 这次GDC China 2015的总结与关卡设计教程的梳理
- Deferred Shading翻译(Shawn Hargreaves 2004 GDC的经典文章)
- 反思:拆GDC的台 是否有益中国游戏业进步?
- 今年的GDC真是劲爆啊,虚幻19刀即可得到代码
- [GDC 2015] Scroll Back - 2D 卷轴游戏的摄影机理论与实务
- Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF
- 品质和创新成为 GDC 2017 “State of Unreal” 的焦点
- POJ 1797 Heavy Transportation(Dijkstra的稍加变形,三角形3边关系)
- Java中的静态方法能否被重写?
- 自定义视图
- 学会使用Block编程
- 史上最详细的Android Studio系列教程(四)
- GDC的理解
- ACM--steps--4.1.2--Strange fuction(二分找答案)
- 如何使用Xamarin在Visual Studio中创建Android应用
- js闭包的用途
- I Hate It(线段树)
- StringBuilder和String的区别
- OpenID 2.0 forGoogle accounts is going away .
- 一种低成本的温室环境远程监控系统的设计与实现
- Async and Stored Procedures