MyException - 我的异常网
当前位置:我的异常网» 操作系统 » 多线程的懂得

多线程的懂得

www.MyException.Cn  网友分享于:2013-09-25  浏览:4次
多线程的理解

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

 

 

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

 

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

 

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

 

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

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

文章评论

旅行,写作,编程
旅行,写作,编程
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java程序员必看电影
Java程序员必看电影
我是如何打败拖延症的
我是如何打败拖延症的
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员必看的十大电影
程序员必看的十大电影
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员应该关注的一些事儿
程序员应该关注的一些事儿
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
代码女神横空出世
代码女神横空出世
程序员的鄙视链
程序员的鄙视链
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
鲜为人知的编程真相
鲜为人知的编程真相
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
每天工作4小时的程序员
每天工作4小时的程序员
那些争议最大的编程观点
那些争议最大的编程观点
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
老程序员的下场
老程序员的下场
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个调试和排错的小建议
10个调试和排错的小建议
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
中美印日四国程序员比较
中美印日四国程序员比较
我的丈夫是个程序员
我的丈夫是个程序员
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
一个程序员的时间管理
一个程序员的时间管理
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
如何成为一名黑客
如何成为一名黑客
漫画:程序员的工作
漫画:程序员的工作
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有