你的位置:首页 > 操作系统

[操作系统]多线程简单总结


多线程

1 多线程原理

多线程的原理就是在 APP 运行中,多个线程之间的关联.现在

  • 对于单核 CPU 来说,同一时间内,CPU 只能处理一个线程,
  • 多线程同时执行的实质是, CPU 在多条线程之间快速的切换.
  • 多核 CPU 来说,就是在同一时间内有多条线程可以同时执行

2 进程和线程

进程:(一个 APP 有一个进程)

1.1 进程是指在系统中正在运行的应用程序

1.2 每个进程之间的独立的,每个进程均运行在其专用的且受保护的内存空间内

1.3 通过 活动监视器 可以查看Mac 系统中所开启的进程

线程:

1.1 一个进程至少有一个线程组成

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

3 资源抢夺/死锁

            多个线程同一时间内,共同访问一个资源.会造成资源的抢夺.线程之间(以 A 和 B 为例),A 等待 B 释放资源, B 等待 A 释放资源,相互之间等待会造成死锁.

4 NSThread,GCD&NSOperation

 

1)NSThread

优点:NSThread 比其他两个轻量级

缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销

2)Cocoa  NSOperation

优点:不需要关心线程管理, 数据同步的事情,可以把精力放在自己需要执行的操作上。

Cocoa operation相关的类是NSOperation, NSOperationQueue.

NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类: NSInvocationOperation和NSBlockOperation.

创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行。

3) GCD(全优点)

Grand Central dispatch(GCD)是Apple开发的一个多核编程的解决方案。在iOS4.0开始之后才能使用。GCD是一个替代NSThread, NSOperationQueue,NSInvocationOperation等技术的很高效强大的技术。

5 线程之间的通信

5.1 全局变量

进程中的线程间内存共享.(常用)

注:定义全局变量的时候,最好要用volatile修饰,以免被系统修饰.

5.2 Message消息机制

常用的Message通信的接口主要有两个:PostMessage和PostThreadMessage, PostMessage为线程向主窗口发送消息。而PostThreadMessage是任意两个线程之间的通信接口。

 

 




巴厘岛蜜月旅游行程参考巴厘岛特价旅游多少钱到巴厘岛游费用报价大全巴厘岛自助游攻略2015怎样去巴厘岛旅游英德天门沟有直达车吗?九州驿站英德天门沟站在哪里坐车? 故乡里主题公园有直达车吗?清远故乡里在哪里坐车? 广州花都故乡里开车怎么走?故乡里开车要多久? 宽窄巷子晒幸福 深圳欢乐海岸麦鲁小镇怎么玩?欢乐海岸麦鲁小镇游玩项目有哪些? 北京欢乐谷有什么好玩的? 欢乐海岸麦鲁小城团购票价?深圳欢乐海岸麦鲁小城好玩不? 2015呀诺达中秋节活动?海南呀诺达中秋节门票多少钱? 大唐芙蓉园门票价格2015?西安大唐芙蓉园订票? 王子谷漂流小孩能漂吗?千岛湖富文王子谷漂流适合多大的儿童玩? 大唐芙蓉园梦回大唐票价?西安大唐芙蓉园梦回大唐演出时间? 大唐芙蓉园梦回大唐好看吗?西安大唐芙蓉园梦回大唐怎么收费? 春节去桂林旅游天气怎么样?穿什么衣服? 2015年过年回家票价会涨吗? 火车票提前几个小时可以退?火车票退票时间是多少? 2015年春节有什么菜谱介绍? 556-3337-817 Datasheet 556-3337-817 Datasheet 556-3337-817F Datasheet 556-3337-817F Datasheet 556-3372-814 Datasheet 556-3372-814 Datasheet 乌鲁木齐香港游 乌鲁木齐香港游 乌鲁木齐香港游 宁波香港旅游 宁波香港旅游 宁波香港旅游 四平游香港游 四平游香港游 四平游香港游