ios线程第一发:线程简介

来源:互联网 发布:mpg格式转换软件 编辑:程序博客网 时间:2024/05/16 17:55

线程和进程:

进程:系统中正在运行的应用程序

       进程之间相互独立,运行在专用且受保护的内存空间内

       

线程:线程是进程的基本执行单位,一个进程的所有任务都在线程中执行


关系:进程想执行任务,必须得有线程(每个进程至少有一个线程)

       线程是进程中的一条执行路径


线程:

串行:按照顺序执行,同一时间之内一个线程只能执行一个任务


多线程: 

一个进程中可以开启多条线程,每条线程可以并发(同时),执行不同的任务

并行:同时执行不同任务(可以提高程序的至ing 效率)


2.多线程原理:

同一时间 cpu 只能处理一条线程,只有一条线程在工作(执行)

多线程并发(同时)执行, 就是cpu 快速在多条线程之间调度(切换)

cpu 调度线程的时间足够快,就造成多线程并发的假象


3.优缺点

优点:能适当提高程序的执行效率

       能适当提高资源利用率(cpu, 内存利用率)


缺点:开启线程需要一定的内存空间,(默认线程都占用512kb,以前主线程1m, 子线程512k, 如果开启大量线程,会占用大量内存,降低程序性能

       线程越多, cpu 在调度线程上得开销就越大,线程的执行效率降低

       程序设计更复杂:(线程之前的通信,多线程数据共享)


4.主线程(ios 程序运行之后,默认开启一条线程,称为主线程或者 ui 线程) 

  作用: 1>刷新/显示 ui 界面

          2>处理 ui 事件(点击,滚动,拖拽)

  注意:不能放耗时操作,耗时操作会卡主主线程,影响 ui 流畅度.


5.线程创建的三种方式(ios多线程实现方案):

 pthread: 几乎不用

 NSThread(附录1):(面向对象,简单易用,可直接操作线程对象)

               生命周期:程序员管理,

               使用频率:偶尔使用  

         

GCD(附录2):(代替 NSThread 等线程技术,充分利用设备的多核)

               生命周期:自动管理

               使用频率:经常使用

NSOperation:(基于 GCD 底层是 GCD,比 GCD 多了些简单实用,更面向对象)

               生命周期:自动管理

               使用频率:经常使用 


6.线程的状态: 

线程的执行是由 cpu 调度的,程序员不能参与,

提示:在开发多线程的时候,不要相信一次执行的结果


线程的优先级:优先级高的任务只是便是 cpu 调度的频率高

误区:优先级高的任务会先执行完

建议:不要修改线程的优先级,做多线程开发最主要的目的是将耗时的操作放在后台,

修改优先级的隐患:优先级翻转


开发多线程宝典:尽量简单!


7.多线程安全隐患

0 0
原创粉丝点击