C面试题:单线程与多线程的问题

2024-12-27 23:19:32
推荐回答(5个)
回答1:

不是,前提是你又足够的空间或者速度。比如说一条路,很多车要过,要是路很宽的话,当时是很多车一起过才效率高了,但是要是路很窄的话,那肯定是不能很多车一起过的了。就好想现在还在研究超级电脑,大型的那种数据系统,普通的电脑就是单线程来处理也不够用啊!

回答2:

首先需要说明的是,使用多线程技术并不能节省CPU的操作,相反,系统还要在切换上下文中花一些时间。多线程只是提高了CPU的利用率而已。所以有时候多线程反而会降低效率。
但是当某个操作大部分时间都出于阻塞状态时,比如说IO等待,这时就需要用单独的线程将其放到后台执行,这样不会影响其他操作的执行。
我个人认为如果两个操作需要的资源只有内存和CPU,这时候单线程更适合一些,另外如果两个操作有严格的执行顺序,则只能用单线程

回答3:

我的天,真是啥答案都有。例子嘛……

请参见《Windows程序设计》——Charles Petzold著
北京大学出版社,第五版
P1125

如若手头没有书,那……我只说4个字:文件加载。自己领悟吧~~~

PS:这涉及到输入输出中断相关问题,若是不太了解底层,还是别想太深……

/////////////

另外,3楼朋友,你说的是单核,若是存在多个处理器,它们可以并发处理线程,实现真正的“并行处理”,此时线程的执行并无严格的一致顺序,因此你的解释在多个CPU共存时肯定不成立。

如果只有一个CPU,你的解释……这个跟死循环……怎么说呢,有一定关系——但我认为,这更应该属于“线程安全”的讨论范畴,与单线程/多线程的效率关系很牵强。

回答4:

CPU 执行线程也是按顺序来的呀,所以如果要单线程比多线程效率更高,除非是多线程里有死循环线程吧,它独占CPU了。
我是这么觉得哈,不一定对哈。

回答5:

不是