C++多线程编程问题

2025-04-18 13:27:07
推荐回答(5个)
回答1:

多线程工作可以提高解决问题的速度

你举得例子可以多线程实现,但是更多的人称之为分布式计算
多线程主要是创建多个线程,每个线程负责自己的事情,每个线程只对主线程负责
至于解决问题的速度应该可以达到提高一半,但是你要注意资源的互斥,互斥处理不好估计会事倍功半

回答2:

如果两个线程能同时运行,那么性能可以提高一半,这里有个前提条件:你的程序运行时被分配两个CPU核心,并且执行过程中没有意外的中断。在实际的环境中,操作系统的进程数和线程数总是多于CPU核心的数量,你不能保证程序的每次运行总能获得合适的CPU数以及执行过程中不会被中断,也许某一次的运行是所有线程依次运行。

对于C++03/98来说,由于语言本身并不直接支持多线程,所以只能使用第三方线程库或者直接使用操作系统API,某些第三方线程库并不能提供足够的并发能力,使用API 由于内核模式切换导致线程的性能低下。

回答3:

是的,理论上两个线程同时工作要比一个线程高出将近一倍的效率的。
但其实现在多线程编程往往并不是用来提高效率的,打个比方如果你写过UI,你应该就会经常使用多线程编程来预防界面假死;如果你做过网络编程,你会发现多线程的主要目的是用来监听/接受消息...在这些地方多线程的主要目的并不是为了提高效率。

回答4:

是的,多线程的一个重要应用就是并行计算

回答5:

多线程和单线程的执行效率问题。不是单纯从某一个角度考虑,还需要兼顾其他方面。比如要依赖实际开发中的问题和场景,甚至还要依赖硬件水平(单核还是多核)、软件水平(多线程实现原则)。
楼主可参考这篇文章的介绍:
http://www.cnblogs.com/chencheng/archive/2012/12/08/2808348.html