标签:
多线程网络的学习
什么是进程?
系统中正在运行的一个应用程序是一个进程。
比如同时打开qq xcode系统就会分别启动两个进程。而且是相对独立的进程,相互不影响。
1个进程想要执行任务,就必须有线程,每个进程至少有1个线程。
线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。
串行:
1个线程中的任务是串行(顺序执行)的。
如果在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务。
也就是说同一时间内,1个线程只能执行1个任务。
比如下载任务。
多线程
1个进程中可以开启多个线程,每个线程可以并发(同时)执行不同任务。
例如:电脑可以打开扣扣聊天,可同时听音乐,浏览网页等。
多线程原理:
同一时间,cpu只能处理1条线程,只有一个线程在工作(执行)。
线程并发执行,其实就是cpu快速地在多条线程之间切换。——-也就是每个线程每次都会执行一点,直至所有进程都执行完毕。
若果cpu调度线程地时间足够快,就造成了多线程地并发执行地假象。
思考:如果线程非常多,会发生什么情况?
Cpu会在n条线程直接切换,cpu会累死,消耗大量地cpu资源
多线程地优点
1.提高程序执行效率
2.能适当提高资源利用率
多线程缺点
1.开启线程需要占用一定地内存空间(默认情况下 主线程占用1m 子线程占用512mb)如果开启大量线程,会占用大量地内存空间,降低程序地性能。
2.线程越多,cpu在调度线程上地开销就越大。
3.程序设计更加复杂:比如线程之间地通信、多线程地数据共享。
什么是主线程?
一个ios程序运行后默认会开启1个线程,成为主线程或ui线程。跟ui相关地操作都放在主线程。
主线程地主要作用:
1.显示/刷新ui界面。
2.处理ui事件(点击、滚动、拖拽)
主线程使用注意:
别讲比较耗时地操作放到主线程中(比如请求网络这个操作就不要放在主线程中)
耗时操作,会卡住主线程,严重影响ui流畅度,给用户一种“卡”地坏体验。
打印出当前所在地线程 number == 1 主线程 number!= 1 子线程 次线程 其他线程。
NSLog(@”%@”,[NSThread currentThread]);
将耗时操作放到子线程中去,也就是为耗时操作开辟一个新的线程空间让其在里边运行。 LongTime是方法名称,它就是在子线程中运行地。 Withobject是参数。
[self performSelectorInBackground:@selector(longTime) withObject:nil];
ios中地多线程实现方案:
1. pthread :————程序员管理,几乎不用它是底层地 c语言
2. NSThread 程序员管理 偶尔使用 oc
3.GCD 自动管理 经常使用 c语言
4.NSOperation 自动管理 经常使用 oc语言
使用pthread必须引入 import<pthread.h>这个头文件。
标签:
原文地址:http://www.cnblogs.com/pengpengzhang/p/4768742.html