iOS中多线程与GCD的使用
来源:互联网 发布:x20第四代人工智能 编辑:程序博客网 时间:2024/05/31 19:41
今天总算是把自己的blog安了个家 欢迎大家来采!
之前总是把学习的内容放到印象笔记里,今天也拿出来晒晒,希望对有需求的童鞋有个帮助吧!
“网络”---------这个词在当今这个社会中,并不会让大家感到陌生,在移动端开发的网络开发更是必不可少的。
我们今天首先来聊一聊iOS中的多线程的CGD的使用
在面试过程中网络也算是出现机率比较高的一部份了。因此我们现在看看几个基本概念目让大家有个整体的印象
1、线程与进程的区别和联系?
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进 程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健 壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
2、iOS中的队列、主线程、子线程?
[NSThread currentThread]跟踪查看当前执行所在的线程情况。 num = 1表示在主线程上执行的任务
2> 使用performSelectorOnMainThread可以重新回到主线程执行任务,通常用于后台线程更新界面UI时使用
- (id)init;
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;
这种方法创建后,需要自己手动启动,启动的方法是:
- (void)start;
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
这个方法可以直接生成一个线程并启动它,而且无需为线程的清理负责。
{
// 1. 下载
NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"下载 %@" , [NSThread currentThread]);
}];
// 2. 滤镜
NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"滤镜 %@" , [NSThread currentThread]);
}];
// 3. 显示
NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"更新UI %@" , [NSThread currentThread]);
}];
// 添加操作之间的依赖关系,所谓“依赖”关系,就是等待前一个任务完成后,后一个任务才能启动
// 依赖关系可以跨线程队列实现
// 提示:在指定依赖关系时,注意不要循环依赖,否则不工作。
[op2 addDependency:op1];
[op3 addDependency:op2];
// [op1 addDependency:op3];//如果将操作1再依赖操作3时,程序则无法运行。
[_queue addOperation:op1];
[_queue addOperation:op2];
[[NSOperationQueue mainQueue] addOperation:op3];//将更新UI的操作加到主队列中
}
- iOS中多线程与GCD的使用
- iOS多线程中GCD的使用
- iOS GCD 多线程的使用
- iOS 多线程GCD的使用
- iOS 多线程的实现与使用(NSThread, NSOperation, GCD)
- iOS - GCD与多线程
- iOS 多线程与GCD
- iOS 多线程与GCD
- iOS多线程GCD使用
- ios多线程 GCD使用
- iOS GCD多线程使用
- 【iOS】多线程NSOperation 与 GCD的区别
- iOS 多线程之GCD的简单使用
- iOS多线程编程GCD的使用
- iOS 多线程的使用(GCD)
- iOS开发多线程-GCD的基本使用
- 整理 iOS 多线程GCD的使用
- iOS多线程编程之GCD的使用
- LAMP
- leetcode第一刷_Search in Rotated Sorted Array
- 腾讯云分析MTA简略教程,以Android为例。
- Android中Telephony学习笔记(7)-ServiceState
- MySQL中UNION和UNION ALL的使用
- iOS中多线程与GCD的使用
- 九度 1124
- word快捷键
- JsonCpp使用
- Eclipse & MinGW
- 粥
- Linux 字符设备驱动简单总结
- 2014/05/01 Android 各个版本, 屏幕尺寸, open GL 等 市场占有率
- 数据库开发规范