您的位置:首页 > 编程语言

关于多线程编程

2015-11-01 21:20 260 查看
今天简单的介绍一下多线程编程,下面是关于多线程必须了解的几个概念:

1.进程:

关于进程,百度百科里面是这么描述的:

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

这种概念性的东西真是非常不容易理解,简单通俗的说,进程就是一个具体的应用程序。因为各个应用程序之间都是相互独立的,所以说每个进程之间也是独立的,每个进程均运行在其专用且受保护的内存空间内。举个例子,比如你在手机上同时打开了QQ和淘宝,而这两个应用程序就是两个进程,他们之间的运行是互不影响的。



2.线程:

1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)
线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行
比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行



3.线程的串行
线程的串行就是说在一个线程中,可能要执行多个任务,这些任务是要排队的,并且有先后顺序呢,先头的完全执行完毕后,后面的才开始执行。举个例子来说,比如你用迅雷下载电影,你想下载多个电影,如果在线程串行情况下,这些电影就会在你的列表中排队,最前面的下载完毕后,后面的才依次开始下载,也就是同一时间里面,之能有一个电影正在下载。



4.多线程

什么是多线程呢,继续以刚才下载电影的例子来说,在多线程的情况下,就是可以同时下载多个电影。显然,多线程更能提高程序的执行效率。



5.多线程的原理
在单核处理器的情况下:
同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)
多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)
如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象,然而实际上,各个线程其实还是串行的,因为在同一时刻CPU只能响应一个线程
思考:如果线程非常非常多,会发生什么情况?
CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源
每条线程被调度执行的频次会降低(线程的执行效率降低)

6.多线程的优缺点
多线程的优点
能适当提高程序的执行效率
能适当提高资源利用率(CPU、内存利用率)
多线程的缺点
开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性
线程越多,CPU在调度线程上的开销就越大
程序设计更加复杂:比如线程之间的通信、多线程的数据共享
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息