2015ztlucky

导航

多线程的基本概念

---恢复内容开始---

1.1 线程和进程

进程: 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器,

程序是指令数据及其组织形式的描述,进程是程序的实体,每个在硬件上运行的程序都是一个进程,也可能是整个程序或是部分程序的动态执行,

一般的应用程序是单个进程的,也有多个进程的(谷歌浏览器),iPhone4之前是不支持多任务的,即只有一个进程在执行。

 

进程是静态的容器,里面容纳了很多个线程;

线程: 有时被称为轻量级进程,是程序执行流的最小单元。线程一般是一系列的方法的线性执行路径,是一组指令的集合,或程序的特殊段;

可以在程序中独立执行,也可以将线程理解为代码运行的上下文,负责在程序中执行多任务,通常由操作系统负责多个线程的调度和执行;

进程与线程的区别:

子进程与父进程有不同的代码雨数据空间,多个线程则功用一个数据空间

1.2多线程

概念:单个程序中同时运行多个线程完成不同的任务,(if—else 区分执行不同的代码但不是多线程)称为多线程。是指软件或硬件上实现

多个线程并发执行的技术;

作用:节约CPU时间,避免程序卡死。多线程并不能提高运行效率,而是可以同时执行多个任务,通过提高资源的使用效率拉力提高系统的

效率。多线程是在同一时间完成多项任务时实现的。

注意:多个线程并发导致的问题是,由于资源共享,多个线程可能回访问同一个资源。这要求多线程共享的资源需要在被使用时进入死锁状态

1.3并行,并发与串行

并行:一组程序按照独立异步的这速度执行,即两行代码同时执行,注意这里不是同一时间发生,,并行只是任务的执行时间上有重叠罢了。要区别于并发

并发:在同一时间段里。两个或多个程序同时开始执行,有时间的重叠(这里是说宏观意义上的同时,只有多核处理器才能真正做到微观

上真正的同时)

串行: 与并行相对,几个任务之间依次执行。即任务执行的时间上没有重叠

1.4同步与异步

同步:是指两个任务之间的关系,一个任务需要等待另一个任务的反馈结果才能继续执行(打电话下达通知,只有别人接电话才能完成通知的

下达)

异步: 与同步的概念相对,一个任务不需要等待其他任务的反馈也可以继续执行(发短信下达通知)

注意:(举例加深理解)

在田径场上 以上概念均可以体现出来。把每个运动员看成一行代码,运动员奔跑代表开始执行任务,跑完全程代表任务结束

线程就像一条一条跑道,不同的运动员在不同的跑道上,可以达到互不干扰的目的,这也是多线程的作用

进程就像是竞技场,每个竞技场都有自己的跑道,也就是 说进程是线程的容器。在80年代以前,是没有线程的概念的,而每次开启进程的开销

过大,就像一个竞技场只有一个跑道,新建一个竞技场花费的资源要远远大于新建一个跑道所花费的资源,为了节约成本,就诞生了线程编程。

并行表示两个跑道之间的关系,运动员在两条跑道上奔跑是可以互不干扰的,任务的开始结束不会影响另一个任务的进行

串行就像接力赛,运动员之间需要交换接替棒,也就是说一个任务完成以后另一个任务才能开始

并发是指并行的两个任务同时发生,就像是运动员起跑,描述 的是一个时间关系,但是起跑可 定有快有慢,有可能做不到完全同时,并发

宏观是同时,微观有可能不是同时

同步 是描述两个事件的交互的概念,比如比赛开始前,裁判通知运动员进场,只有运动员全部进场之后比赛才能开始,而在于动员进场的

过程中,裁判处于等待的状态,也就是同步会导致程序阻塞;

异步和同步的概念是相对的,在裁判通知运动员进场之后立即开始比赛,不等待运动员进场酒直接开始比赛。

 

---恢复内容结束---

posted on 2016-01-15 19:56  2015ztlucky  阅读(144)  评论(0编辑  收藏  举报