首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

多线程的懂得

2012-09-24 
多线程的理解前段时间看了操作系统线程那章,对多线程有了新的认识,重新思考了多线程在开发中的使用。??为什

多线程的理解

前段时间看了操作系统线程那章,对多线程有了新的认识,重新思考了多线程在开发中的使用。

?

?

为什么要使用多线程,多线程编程的目的就是最大限度地利用CPU资源,当某一线程在等待I/O等资源操作完成出现阻塞时,让其它需要占用CPU资源的线程有机会获得CPU资源。多进程技术同样也可以做到这一点,但是创建一个进程开销太大,进程间通信不方便,加上进程切换时间太长,所以导致了多线程(线程也称为轻量级进程)的出现。

?

对于单核CPU来说,在同一时间只能执行一个线程,所以如果想实现多任务,那么就只能每个进程(进程至少有一个主线程)或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略切换其他线程执行。但是这种线程间的切换是有cpu开销的,而这种开销对于任务来说是无效的。同时在同一进程内的所有线程是可以共享的资源,在多线程中还需考虑资源共享、数据独占、互斥量等一系列问题。所以两个线程执行完成一个任务(每个线程完成一个)所需要的时间比一个线程执行完成两次所需要的时间要多一些(多的时间发生在线程间切换开销上)。所以采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间,因为时间片很短,这样给用户的感觉是有多个线程在同时执行。

?

?所以对于有慢速I/O访问需求的应用程序,多线程要优于单线程。最典型的情况就是数据库请求处理这块,可以采用N个DB线程,一个逻辑线程的架构。而对于主要消耗CPU运算资源的业务逻辑应用程序,尽量采用单线程,这样能更大发挥cpu的运算能力。?

?

from?http://dmh920.iteye.com/blog/1679987

如果原作者认为本文不能转载,请留言,我会马上删除

热点排行