多线程的基本概念
---恢复内容开始---
1.1 线程和进程
进程: 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器,
程序是指令数据及其组织形式的描述,进程是程序的实体,每个在硬件上运行的程序都是一个进程,也可能是整个程序或是部分程序的动态执行,
一般的应用程序是单个进程的,也有多个进程的(谷歌浏览器),iPhone4之前是不支持多任务的,即只有一个进程在执行。
进程是静态的容器,里面容纳了很多个线程;
线程: 有时被称为轻量级进程,是程序执行流的最小单元。线程一般是一系列的方法的线性执行路径,是一组指令的集合,或程序的特殊段;
可以在程序中独立执行,也可以将线程理解为代码运行的上下文,负责在程序中执行多任务,通常由操作系统负责多个线程的调度和执行;
进程与线程的区别:
子进程与父进程有不同的代码雨数据空间,多个线程则功用一个数据空间
1.2多线程
概念:单个程序中同时运行多个线程完成不同的任务,(if—else 区分执行不同的代码但不是多线程)称为多线程。是指软件或硬件上实现
多个线程并发执行的技术;
作用:节约CPU时间,避免程序卡死。多线程并不能提高运行效率,而是可以同时执行多个任务,通过提高资源的使用效率拉力提高系统的
效率。多线程是在同一时间完成多项任务时实现的。
注意:多个线程并发导致的问题是,由于资源共享,多个线程可能回访问同一个资源。这要求多线程共享的资源需要在被使用时进入死锁状态
1.3并行,并发与串行
并行:一组程序按照独立异步的这速度执行,即两行代码同时执行,注意这里不是同一时间发生,,并行只是任务的执行时间上有重叠罢了。要区别于并发
并发:在同一时间段里。两个或多个程序同时开始执行,有时间的重叠(这里是说宏观意义上的同时,只有多核处理器才能真正做到微观
上真正的同时)
串行: 与并行相对,几个任务之间依次执行。即任务执行的时间上没有重叠
1.4同步与异步
同步:是指两个任务之间的关系,一个任务需要等待另一个任务的反馈结果才能继续执行(打电话下达通知,只有别人接电话才能完成通知的
下达)
异步: 与同步的概念相对,一个任务不需要等待其他任务的反馈也可以继续执行(发短信下达通知)
注意:(举例加深理解)
在田径场上 以上概念均可以体现出来。把每个运动员看成一行代码,运动员奔跑代表开始执行任务,跑完全程代表任务结束
线程就像一条一条跑道,不同的运动员在不同的跑道上,可以达到互不干扰的目的,这也是多线程的作用
进程就像是竞技场,每个竞技场都有自己的跑道,也就是 说进程是线程的容器。在80年代以前,是没有线程的概念的,而每次开启进程的开销
过大,就像一个竞技场只有一个跑道,新建一个竞技场花费的资源要远远大于新建一个跑道所花费的资源,为了节约成本,就诞生了线程编程。
并行表示两个跑道之间的关系,运动员在两条跑道上奔跑是可以互不干扰的,任务的开始结束不会影响另一个任务的进行
串行就像接力赛,运动员之间需要交换接替棒,也就是说一个任务完成以后另一个任务才能开始
并发是指并行的两个任务同时发生,就像是运动员起跑,描述 的是一个时间关系,但是起跑可 定有快有慢,有可能做不到完全同时,并发
宏观是同时,微观有可能不是同时
同步 是描述两个事件的交互的概念,比如比赛开始前,裁判通知运动员进场,只有运动员全部进场之后比赛才能开始,而在于动员进场的
过程中,裁判处于等待的状态,也就是同步会导致程序阻塞;
异步和同步的概念是相对的,在裁判通知运动员进场之后立即开始比赛,不等待运动员进场酒直接开始比赛。
---恢复内容结束---
posted on 2016-01-15 19:56 2015ztlucky 阅读(144) 评论(0) 编辑 收藏 举报