一般讲如何使用多线程增加数据处理速度?

和Thread数目有关系吗?是不是线程太多反而会减慢处理速度?... 和Thread数目有关系吗?
是不是线程太多反而会减慢处理速度?
展开
 我来答
百度网友d18ea0f
2011-03-07 · TA获得超过174个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:170万
展开全部
处理速度和多线程是没有多少关系的,但是在具体的任务处理上,对资源的分配如果合理的话,对应用的性能有较大的提高。
但是当你在线程T1中执行任务A时,任务B可以被“同时”执行,那么你可以为任务B分配线程T2,这样处理器在分配资源时,让人感觉B的任务也是在同时执行,对你的应用的性能有所提高。
T1 T2
Do A1
Do B1
Do A2
Do B2
Do A3
......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翦泽少芷荷
2020-03-03 · TA获得超过1097个赞
知道小有建树答主
回答量:1638
采纳率:75%
帮助的人:7.5万
展开全部
如果你要说比导入速度,如果你要导入的数据都在一个文件里,那自然是单线程快,多线程需要数据同步。如果你要导入的是多个文件,那么多线程,一个线程一个文件就会比较快了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daay1986
推荐于2016-02-14 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1470万
展开全部
多线程提速只是利用人的错觉而已,在目前的情况下多线程并不能真正的提速,他只是分散了CPU压力而已。如果真正提速,需要cpu的控制器做改进,能够准确的识别代码语句之间的逻辑联系,但是这个很难最少目前看来相当难。
用一个现实的例子来说,一个修理轮胎的人,会面对不同需求的客户,有些人车子丢那里可能过一天再拿,有的人可以需要立刻补好赶路。如果是单线程的话,他就是一个一个的补好,但是这样对于那些赶时间的人来说是极其不爽的,因为它必须等之前那个人(而且那个人还是明天再来拿车的)修完,再来帮他修理。这样对服务的客户来说是很不友善的。
如果是多线程是有人需要赶时间他就把那些不急迫的轮胎丢一边,先把赶时间的修理好,然后有空了再去修理那些明天来拿的轮胎。这样的结果就是对于赶时间的人来说效率很高啊,来了就修理好,对于那些不在乎时间的人来说,效率也没降低,所以对比之下就有错觉了,觉得多线程提高效率。
而实际上你会知道,当这个修理在丢掉手上的真正修理的轮胎,去选择赶时间的轮胎的时候,他必须要记得丢掉的那个轮胎的修理进度,而且要把他挂到一个安全的地方,然后接手急迫的任务,当他回到那个被挂起来的轮胎的时候,他要检查那个轮胎的状态,在对比之前的进度继续修理。这样下来毫无疑问效率肯定是降低了,因为他必须换来换去,还要记得被挂起来的轮胎的状态,如果是一个一个修理就不用了,显然这种多线程方式是降低效率了。
cpu在服务应用程序的时候也是一样,按照优先级来,如果高优先任务来了,他立刻丢掉手里的去做高级的,做完了在回到低级上去。对于cpu来说效率肯定降低了。对于被服务者来说会有一个很好的用户体验。他不需要等待了。
由于线程切换需要花费,如果只是一两个线程花费不大,但是一旦大量线程来了,cpu就会在这些线程切换之间花费大量时间了。毕竟哪个优先级高需要判断,如果线程过多判断的时间会增加,而且由于线程过多在切换时候代价也增加,因为你要记住每一个线程的状态,如果花费在线程切换时间增加,实际上能够为程序服务的时间必然减少。效率肯定更低。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式