码迷,mamicode.com
首页 > 编程语言 > 详细

线程学习笔记

时间:2015-08-29 12:20:28      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

多线程网络的学习

什么是进程?

  系统中正在运行的一个应用程序是一个进程。

  比如同时打开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语言

  • 一套通用地多线程api
  • 适用于unix/linux/win等系统
  • 跨平台/可移植
  • 使用难度大

  2. NSThread 程序员管理 偶尔使用  oc

  • 使用更加面向对象
  • 更简单宜用,直接操作线程对象

  3.GCD   自动管理 经常使用  c语言

  • 旨在代替NSThread等线程技术
  • 充分利用设备地多核

4.NSOperation 自动管理  经常使用  oc语言

  • 基于GCD(底层是GCD)
  • 比GCD多了些简单实用功能
  • 使用更加面向对象

 使用pthread必须引入  import<pthread.h>这个头文件。

 

 

线程学习笔记

标签:

原文地址:http://www.cnblogs.com/pengpengzhang/p/4768742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!