免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7973 | 回复: 17
打印 上一主题 下一主题

[算法] 进一步为采用单线程还是多线程而纠结。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-16 13:01 |只看该作者 |倒序浏览
话说引入多线程是为了增加任务的并发处理能力,但是由于线程的切换有性能损耗,所以并不见得多线程就一定会高效。

同样,单线程可以完成的事儿,用多线程来做是否也一定低效,也没有一定的例子来证明,所以有点纠结,什么时候用多线程,什么时候用单线程。


有大侠给介绍一下不?

论坛徽章:
0
2 [报告]
发表于 2010-12-16 13:10 |只看该作者
多线程最基本一点,就是可以利用多核性能。至于线程切换的性能损失,我相信大部分情况下,即使有性能问题,都与这个无关,不信profile一下。坚决反对没有profile时的所谓性能推测和性能优化

论坛徽章:
0
3 [报告]
发表于 2010-12-16 13:45 |只看该作者
回复 2# drangon


    在多核CPU还未开始应用时,多线程的概念就被炒的如火如荼了 ,难道当时这个多线程的应用没有意义吗?

    或者假设多线程是为多核心应用进行的并发支持,那么是不是意味着在单核架构下,尽量使用单线程?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2010-12-16 14:10 |只看该作者
有需用等待某些操作完成的时候,可以用多线程并行。描述得不好,给个实例比较好说

论坛徽章:
0
5 [报告]
发表于 2010-12-16 14:15 |只看该作者
本帖最后由 davelv 于 2010-12-16 14:19 编辑

把运算密集的操作和IO密集的操作分成不同的线程,可以有效利用CPU。
此外,有些要求实时性,并发性高于整体处理性能的操作也需要用多线程,例如多任务实时系统,web IO。

论坛徽章:
0
6 [报告]
发表于 2010-12-16 14:20 |只看该作者
回复 5# davelv


    通过这个可以看出,在不南要进行频繁IO这种阻塞性调用的时候,多线程毕竟还是不如单线程效率高, 是这个道理不?

论坛徽章:
0
7 [报告]
发表于 2010-12-16 14:23 |只看该作者
比如说我现在想做一个消息 转发中心,

从A进程接收消息 ,转发给B,势必会有两种操作:

1、从 A的socket 读。
2、写入B的socket。

在大数据量并发的情况下,用一个线程使用select模型来进行事件分发的方式处理好呢还是使用两个线程,
:一个线程负责从A读,然后把数据放到B的一个缓冲里。
另一个线程检查所有socket,有可写事件就调用send把数据发送出去?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2010-12-16 14:34 |只看该作者
例如  要 抓网页, 如果遇到慢的网站, 如果单线程, 整个都阻塞住了。 当然多线程。

论坛徽章:
0
9 [报告]
发表于 2010-12-16 15:28 |只看该作者
比如说我现在想做一个消息 转发中心,

从A进程接收消息 ,转发给B,势必会有两种操作:

1、从 A的soc ...
foolishx 发表于 2010-12-16 14:23



建议使用多线程操作,避免中间某个环节的短时间阻塞造成整个流程效率下降。
而且现在机器大多是多核的,单线程根本无法有效利用。
至于单核纯数据运算,自然不需要多线程。可以参考OS演化的过程,从批处理到分时再到实时,OS设计者是出于什么一种目的呢。

论坛徽章:
0
10 [报告]
发表于 2010-12-16 15:36 |只看该作者
我们的使用环境上恰恰不能使用多核CPU,硬件设计决定了这种体系结构,没有办法。

每当提及多线程时,老大们都很反感……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP