C++多线程编程问题

我还没开发过多线程的程序,想了解下情况!多线程工作是不是可以提高解决问题的速度?举个简单的例子,比如求解1+2+......+100,单线程要从1加到100一步一步来算!... 我还没开发过多线程的程序,想了解下情况!多线程工作是不是可以提高解决问题的速度?举个简单的例子,比如求解1+2+......+100,单线程要从1加到100一步一步来算!如果用两个线程来解,是不是可以其中一个线程求1加至50,另一个线程求51加至100,然后再求总和,两个线程同时工作,从而提高一半的解决问题速度。可以这样理解吗?或者,多线程能有这样的作用吗?
(当然,这里先不要计较创建线程,结束线程等操作的开销)
展开
 我来答
百度网友8c35aa0
2013-10-28 · TA获得超过287个赞
知道小有建树答主
回答量:307
采纳率:100%
帮助的人:237万
展开全部
多线程工作可以提高解决问题的速度

你举得例子可以多线程实现,但是更多的人称之为分布式计算
多线程主要是创建多个线程,每个线程负责自己的事情,每个线程只对主线程负责
至于解决问题的速度应该可以达到提高一半,但是你要注意资源的互斥,互斥处理不好估计会事倍功半
更多追问追答
追问
什么是资源互斥?
追答
同一个资源多个线程使用
帐号已注销
2013-10-28 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1216万
展开全部
如果两个线程能同时运行,那么性能可以提高一半,这里有个前提条件:你的程序运行时被分配两个CPU核心,并且执行过程中没有意外的中断。在实际的环境中,操作系统的进程数和线程数总是多于CPU核心的数量,你不能保证程序的每次运行总能获得合适的CPU数以及执行过程中不会被中断,也许某一次的运行是所有线程依次运行。

对于C++03/98来说,由于语言本身并不直接支持多线程,所以只能使用第三方线程库或者直接使用操作系统API,某些第三方线程库并不能提供足够的并发能力,使用API 由于内核模式切换导致线程的性能低下。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刷新①丅5e6
2013-10-28 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:579万
展开全部
是的,理论上两个线程同时工作要比一个线程高出将近一倍的效率的。
但其实现在多线程编程往往并不是用来提高效率的,打个比方如果你写过UI,你应该就会经常使用多线程编程来预防界面假死;如果你做过网络编程,你会发现多线程的主要目的是用来监听/接受消息...在这些地方多线程的主要目的并不是为了提高效率。
追问
以后会渐渐接触到这些应用的,不过现在我正在写一个运算量很大的程序,递归调用功能函数多达几十亿次,多次优化都达不到理想情况,只好寻求多线程来解决了!学多线程的目的就是想提高解决问题的效率。如果是创建n个线程,在理论上是不是解决问题的效率就快n倍?
追答
理论上是这样的,但是数据交互、资源互斥这些问题会很蛋疼的...我研究生的时候做过这个课题...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laomaicunzhang
2013-10-28 · TA获得超过148个赞
知道小有建树答主
回答量:646
采纳率:40%
帮助的人:190万
展开全部
是的,多线程的一个重要应用就是并行计算
追问
多线程常用的应用一般有哪些?
追答
你愿意的话把你的qq用私信发给我交流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
never715
2013-10-28 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:450万
展开全部
多线程和单线程的执行效率问题。不是单纯从某一个角度考虑,还需要兼顾其他方面。比如要依赖实际开发中的问题和场景,甚至还要依赖硬件水平(单核还是多核)、软件水平(多线程实现原则)。
楼主可参考这篇文章的介绍:
http://www.cnblogs.com/chencheng/archive/2012/12/08/2808348.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式