C++多线程编程问题
我还没开发过多线程的程序,想了解下情况!多线程工作是不是可以提高解决问题的速度?举个简单的例子,比如求解1+2+......+100,单线程要从1加到100一步一步来算!...
我还没开发过多线程的程序,想了解下情况!多线程工作是不是可以提高解决问题的速度?举个简单的例子,比如求解1+2+......+100,单线程要从1加到100一步一步来算!如果用两个线程来解,是不是可以其中一个线程求1加至50,另一个线程求51加至100,然后再求总和,两个线程同时工作,从而提高一半的解决问题速度。可以这样理解吗?或者,多线程能有这样的作用吗?
(当然,这里先不要计较创建线程,结束线程等操作的开销) 展开
(当然,这里先不要计较创建线程,结束线程等操作的开销) 展开
5个回答
展开全部
如果两个线程能同时运行,那么性能可以提高一半,这里有个前提条件:你的程序运行时被分配两个CPU核心,并且执行过程中没有意外的中断。在实际的环境中,操作系统的进程数和线程数总是多于CPU核心的数量,你不能保证程序的每次运行总能获得合适的CPU数以及执行过程中不会被中断,也许某一次的运行是所有线程依次运行。
对于C++03/98来说,由于语言本身并不直接支持多线程,所以只能使用第三方线程库或者直接使用操作系统API,某些第三方线程库并不能提供足够的并发能力,使用API 由于内核模式切换导致线程的性能低下。
对于C++03/98来说,由于语言本身并不直接支持多线程,所以只能使用第三方线程库或者直接使用操作系统API,某些第三方线程库并不能提供足够的并发能力,使用API 由于内核模式切换导致线程的性能低下。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,理论上两个线程同时工作要比一个线程高出将近一倍的效率的。
但其实现在多线程编程往往并不是用来提高效率的,打个比方如果你写过UI,你应该就会经常使用多线程编程来预防界面假死;如果你做过网络编程,你会发现多线程的主要目的是用来监听/接受消息...在这些地方多线程的主要目的并不是为了提高效率。
但其实现在多线程编程往往并不是用来提高效率的,打个比方如果你写过UI,你应该就会经常使用多线程编程来预防界面假死;如果你做过网络编程,你会发现多线程的主要目的是用来监听/接受消息...在这些地方多线程的主要目的并不是为了提高效率。
追问
以后会渐渐接触到这些应用的,不过现在我正在写一个运算量很大的程序,递归调用功能函数多达几十亿次,多次优化都达不到理想情况,只好寻求多线程来解决了!学多线程的目的就是想提高解决问题的效率。如果是创建n个线程,在理论上是不是解决问题的效率就快n倍?
追答
理论上是这样的,但是数据交互、资源互斥这些问题会很蛋疼的...我研究生的时候做过这个课题...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,多线程的一个重要应用就是并行计算
追问
多线程常用的应用一般有哪些?
追答
你愿意的话把你的qq用私信发给我交流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程和单线程的执行效率问题。不是单纯从某一个角度考虑,还需要兼顾其他方面。比如要依赖实际开发中的问题和场景,甚至还要依赖硬件水平(单核还是多核)、软件水平(多线程实现原则)。
楼主可参考这篇文章的介绍:
http://www.cnblogs.com/chencheng/archive/2012/12/08/2808348.html
楼主可参考这篇文章的介绍:
http://www.cnblogs.com/chencheng/archive/2012/12/08/2808348.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询